diff options
author | Nick Mathewson <nickm@torproject.org> | 2014-08-08 10:09:17 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2014-08-08 10:09:17 -0400 |
commit | bb68c731b897a967a4b7eb138728fa077617646e (patch) | |
tree | 20d7c23762568756b01a6f698d09b7bee6dad808 | |
parent | 374611d9f6d1efd7ae6c3570104b284991519293 (diff) | |
parent | fcac4b4467427e8f6ad948e8c8e6f34a0131e716 (diff) | |
download | tor-bb68c731b897a967a4b7eb138728fa077617646e.tar.gz tor-bb68c731b897a967a4b7eb138728fa077617646e.zip |
Merge remote-tracking branch 'origin/maint-0.2.5'
-rw-r--r-- | changes/bug11200-caching | 7 | ||||
-rw-r--r-- | src/or/directory.c | 2 | ||||
-rw-r--r-- | src/or/nodelist.c | 21 | ||||
-rw-r--r-- | src/or/routerlist.c | 4 |
4 files changed, 22 insertions, 12 deletions
diff --git a/changes/bug11200-caching b/changes/bug11200-caching new file mode 100644 index 0000000000..e3fbaeca73 --- /dev/null +++ b/changes/bug11200-caching @@ -0,0 +1,7 @@ + o Major bugfixes: + - When Tor starts with DisabledNetwork set, it would correctly + conclude that it shouldn't try making circuits, but it would + mistakenly cache this conclusion and continue believing it even + when DisableNetwork is set to 0. Fixes the bug introduced by the + fix for bug 11200; bugfix on 0.2.5.4-alpha. + diff --git a/src/or/directory.c b/src/or/directory.c index 77f8f310b1..d8492cbbec 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -349,7 +349,7 @@ should_use_directory_guards(const or_options_t *options) return 1; } -/** Pick an unconsetrained directory server from among our guards, the latest +/** Pick an unconstrained directory server from among our guards, the latest * networkstatus, or the fallback dirservers, for use in downloading * information of type <b>type</b>, and return its routerstatus. */ static const routerstatus_t * diff --git a/src/or/nodelist.c b/src/or/nodelist.c index 8f870816d2..7b1f338bd4 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -1275,10 +1275,21 @@ static char dir_info_status[256] = ""; int router_have_minimum_dir_info(void) { + static int logged_delay=0; + const char *delay_fetches_msg = NULL; + if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) { + if (!logged_delay) + log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg); + logged_delay=1; + strlcpy(dir_info_status, delay_fetches_msg, sizeof(dir_info_status)); + return 0; + } + logged_delay = 0; /* reset it if we get this far */ + if (PREDICT_UNLIKELY(need_to_update_have_min_dir_info)) { update_router_have_minimum_dir_info(); - need_to_update_have_min_dir_info = 0; } + return have_min_dir_info; } @@ -1498,7 +1509,6 @@ update_router_have_minimum_dir_info(void) const networkstatus_t *consensus = networkstatus_get_reasonably_live_consensus(now,usable_consensus_flavor()); int using_md; - const char *delay_fetches_msg = NULL; if (!consensus) { if (!networkstatus_get_latest_consensus()) @@ -1511,13 +1521,6 @@ update_router_have_minimum_dir_info(void) goto done; } - if (should_delay_dir_fetches(get_options(), &delay_fetches_msg)) { - log_notice(LD_DIR, "Delaying directory fetches: %s", delay_fetches_msg); - strlcpy(dir_info_status, delay_fetches_msg, sizeof(dir_info_status)); - res = 0; - goto done; - } - using_md = consensus->flavor == FLAV_MICRODESC; { diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 5bad2b2e5c..9493c8094a 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -1367,7 +1367,7 @@ router_pick_trusteddirserver(dirinfo_type_t type, int flags) return router_pick_dirserver_generic(trusted_dir_servers, type, flags); } -/** Try to find a running fallback directory Flags are as for +/** Try to find a running fallback directory. Flags are as for * router_pick_directory_server. */ const routerstatus_t * @@ -1376,7 +1376,7 @@ router_pick_fallback_dirserver(dirinfo_type_t type, int flags) return router_pick_dirserver_generic(fallback_dir_servers, type, flags); } -/** Try to find a running fallback directory Flags are as for +/** Try to find a running fallback directory. Flags are as for * router_pick_directory_server. */ static const routerstatus_t * |