Add a missing ! to directory_fetches_from_authorities

The old logic would have us fetch from authorities if we were refusing
unknown exits and our exit policy was reject*.  Instead, we want to
fetch from authorities if we're refusing unknown exits and our exit
policy is _NOT_ reject*.

Fixed by boboper.  Fixes more of 2097.  Bugfix on 0.2.2.16-alpha.
This commit is contained in:
Nick Mathewson 2010-12-06 11:36:01 -05:00
parent c0f1517d87
commit feffbce814
2 changed files with 7 additions and 1 deletions

6
changes/bug2097-more Normal file
View File

@ -0,0 +1,6 @@
o Minor bugfixes:
- Fix a logic error in directory_fetches_from_authorities that
would cause all _non_-exits refusing single-hop-like circuits to
fetch from authorities, when we wanted to have _exits_ fetch
from authorities. Fix by boboper; fixes more of 2097; bugfix on
0.2.2.16-alpha.

View File

@ -1160,7 +1160,7 @@ directory_fetches_from_authorities(or_options_t *options)
return 0;
if (server_mode(options) && router_pick_published_address(options, &addr)<0)
return 1; /* we don't know our IP address; ask an authority. */
refuseunknown = router_my_exit_policy_is_reject_star() &&
refuseunknown = ! router_my_exit_policy_is_reject_star() &&
should_refuse_unknown_exits(options);
if (options->DirPort == 0 && !refuseunknown)
return 0;