When DisableNetwork is 1 but !circuit_enough_testing_circs(), we can still launch circuits
In consider_testing_reachability(), we check
if (test_or && (!orport_reachable || !circuit_enough_testing_circs())) {
Once #18616 (moved) is merged, the first function will return 1 for orport_reachable when DisableNetwork is 1, so that bug will go away.
But it will remain the case that if !circuit_enough_testing_circs(), we will proceed to call circuit_launch_by_extend_info(), even when DisableNetwork is 1.
There are four places that call consider_testing_reachability():
- circuitbuild.c:circuit_send_next_onion_skin()
- circuituse.c:circuit_testing_opened()
- main.c:directory_info_has_arrived()
- main.c:check_for_reachability_bw_callback()
I think the middle two are safe, since they shouldn't happen while DisableNetwork is set.
I think the first one is iffy, since it's called from a bunch of places so I'm not sure, but given the name I hope it doesn't get called during DisableNetwork.
And I think the fourth one is bad news, since it gets called periodically and doesn't check DisableNetwork.