__DisablePredictedCircuits causes bootstrap to hang at "Connecting to Tor Network"

When __DisablePredictedCircuits is set in the torrc, bootstrap hangs at 80% - "Connecting to Tor Network".

This happens in hidden service configurations, it may happen in other client or server configurations as well.

I think this is because:

  • no predicted circuits are being built, and therefore
  • tor never completes an OR connection, and therefore
  • tor never thinks it has bootstrapped, and therefore
  • tor doesn't make any of the OR connections it would make as part of its configured function

To fix this, we need to either:

  • assume tor is connected to the network if it gets to "Connecting to Tor Network" and __DisablePredictedCircuits is set, or
  • make at least one connection at "Connecting to Tor Network" even if __DisablePredictedCircuits is set

The first risks repeatedly making connections if tor isn't connected to the network, the second risks making connections the user doesn't want.