Simply route length generation code.

The old code had logic to use a shorter path length if we didn't
have enough nodes. But we don't support 2-node networks anwyay.

Fix for #9926.  I'm not calling this a bugfix on any particular
version, since a 2-node network would fail to work for you for a lot
of other reasons too, and it's not clear to me when that began, or if
2-node networks would ever have worked.
This commit is contained in:
Nick Mathewson 2013-10-08 11:48:33 -04:00
parent 245ecfff36
commit c8c2298015
2 changed files with 11 additions and 15 deletions

6
changes/bug9926 Normal file
View file

@ -0,0 +1,6 @@
o Minor bugfixes:
- Remove some old fallback code designed to keep Tor clients working
in a network with only two working nodes. Elsewhere in the code we
have long since stopped supporting such networks, so there wasn't
much point in keeping it around. Fixes bug 9926.

View file

@ -2762,11 +2762,7 @@ onionskin_answer(or_circuit_t *circ,
* number of endpoints that would give something away about our destination.
*
* If the routerlist <b>nodes</b> doesn't have enough routers
* to handle the desired path length, return as large a path length as
* is feasible, except if it's less than 2, in which case return -1.
* XXX ^^ I think this behavior is a hold-over from back when we had only a
* few relays in the network, and certainly back before guards existed.
* We should very likely get rid of it. -RD
* to handle the desired path length, return -1.
*/
static int
new_route_len(uint8_t purpose, extend_info_t *exit, smartlist_t *nodes)
@ -2787,17 +2783,11 @@ new_route_len(uint8_t purpose, extend_info_t *exit, smartlist_t *nodes)
log_debug(LD_CIRC,"Chosen route length %d (%d/%d routers suitable).",
routelen, num_acceptable_routers, smartlist_len(nodes));
if (num_acceptable_routers < 2) {
log_info(LD_CIRC,
"Not enough acceptable routers (%d). Discarding this circuit.",
num_acceptable_routers);
return -1;
}
if (num_acceptable_routers < routelen) {
log_info(LD_CIRC,"Not enough routers: cutting routelen from %d to %d.",
routelen, num_acceptable_routers);
routelen = num_acceptable_routers;
log_info(LD_CIRC,
"Not enough acceptable routers (%d/%d). Discarding this circuit.",
num_acceptable_routers, routelen);
return -1;
}
return routelen;