Cannibalizing circuits
If we need a circuit and have a clean one already established, in some cases we can adapt the clean circuit for our new purpose. Specifically,
For hidden service interactions, we can "cannibalize" a clean internal circuit if one is available, so we don't need to build those circuits from scratch on demand.
We can also cannibalize clean circuits when the client asks to exit at a given node -- either via the ".exit" notation or because the destination is running at the same location as an exit node.