mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
If a router is hibernating, never vote that it is Running.
Also, clean up and comment some of the logic in dirserv_set_router_is_running.
This commit is contained in:
parent
15424bf800
commit
fac272da31
5
changes/bug911_hibernate_precludes_Running
Normal file
5
changes/bug911_hibernate_precludes_Running
Normal file
@ -0,0 +1,5 @@
|
||||
o Minor bugfixes:
|
||||
- Never vote for a server as "Running" if we have a descriptor for it
|
||||
claiming to be hibernating, and that descriptor was published more
|
||||
recently than our last contact with the server.
|
||||
|
@ -935,11 +935,21 @@ dirserv_set_router_is_running(routerinfo_t *router, time_t now)
|
||||
*/
|
||||
int answer;
|
||||
|
||||
if (router_is_me(router) && !we_are_hibernating())
|
||||
if (router_is_me(router))
|
||||
/* We always know if we are down ourselves. */
|
||||
answer = ! we_are_hibernating();
|
||||
else if (router->is_hibernating &&
|
||||
router->cache_info.published_on > router->last_reachable)
|
||||
/* A hibernating router is down unless we (somehow) had contact with it
|
||||
* since it declared itself to be hibernating. */
|
||||
answer = 0;
|
||||
else if (get_options()->AssumeReachable)
|
||||
/* If AssumeReachable, everybody is up! */
|
||||
answer = 1;
|
||||
else
|
||||
answer = get_options()->AssumeReachable ||
|
||||
now < router->last_reachable + REACHABLE_TIMEOUT;
|
||||
/* Otherwise, a router counts as up if we found it reachable in the last
|
||||
REACHABLE_TIMEOUT seconds. */
|
||||
answer = (now < router->last_reachable + REACHABLE_TIMEOUT);
|
||||
|
||||
if (!answer && running_long_enough_to_decide_unreachable()) {
|
||||
/* not considered reachable. tell rephist. */
|
||||
|
Loading…
Reference in New Issue
Block a user