Have frac_nodes_with_descriptors() take and use for_direct_connect
On their review for #25691 (moved), teor notes (about for_direct_connect):
We should pass for_direct_conn into this function, and use node_has_preferred_descriptor().
For the mid and exit case: We won't bootstrap unless we have enough actual mid and exit bandwidth, even if we have mids or exits listed as our bridges.
For the guard case: The guard case is unchanged for non-bridge clients.
The bridge client case could be tricky, because:
- compute_frac_paths_available() only checks guard-flagged nodes, not bridges
- even if it did check bridges, they
don't have bandwidthsonly have self-measured bandwidths
- even if we used a weight of 1 for each bridge, we don't require 65% of bridges to be up to bootstrap
To workaround this issue, I suggest we make f_guard = 1.0 in compute_frac_paths_available() if we are using bridges, and have at least one bridge with
the preferreda full descriptor.
Edit: bridge clients always use full descriptors for bridges Edit: bridges have self-measured bandwidths