Skip to content
Snippets Groups Projects
Closed (moved) Decouple connection_ap_handshake_attach_circuit from nearly everything.
  • View options
  • Decouple connection_ap_handshake_attach_circuit from nearly everything.

  • View options
  • Closed (moved) Issue created by Nick Mathewson

    Long ago we used to call connection_ap_handshake_attach_circuit() only in a few places, since connection_ap_attach_pending() attaches all the pending connections, and does so regularly. But this turned out to have a performance problem: it would introduce a delay to launching or connecting a stream.

    We couldn't just call connection_ap_attach_pending() every time we make a new connection, since it walks the whole connection list. So we started calling connection_ap_attach_pending all over, instead! But that's kind of ugly and messes up our callgraph.

    But we have an opportunity to make Tor simpler!

    • We can make connection_ap_attach_pending() linear in the number of pending entry connections, rather than in the number of total connections.
    • If we do that, we can make it get called from whenever there is a pending entry connection from run_main_loop_once() or somewhere.
    • And if we do that, we can just put connections on a pending-list, rather than calling connection_ap_attach_pending() on them directly.

    This will simplify tor, simplify our callgraph, and -- with the help of #17589 (moved) -- break the blob into multiple smaller strongly connected components.

    Linked items ... 0

  • Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first
    Loading Loading Loading Loading Loading Loading Loading Loading Loading Loading