From 7af95e5c06e82ca784c21c764000c053980a14aa Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 14 Dec 2005 22:05:10 +0000 Subject: [PATCH] When we mark a router as down, also mark its local_routerstatus as not running. This way, we do not use directories that are believed to be down. svn:r5587 --- src/or/routerlist.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/or/routerlist.c b/src/or/routerlist.c index c2c835c76a..44033a15c4 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -1413,6 +1413,7 @@ void router_mark_as_down(const char *digest) { routerinfo_t *router; + local_routerstatus_t *status; tor_assert(digest); SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, d, @@ -1420,13 +1421,17 @@ router_mark_as_down(const char *digest) d->is_running = 0); router = router_get_by_digest(digest); - if (!router) /* we don't seem to know about him in the first place */ - return; - debug(LD_DIR,"Marking router '%s' as down.",router->nickname); - if (router_is_me(router) && !we_are_hibernating()) - warn(LD_NET, "We just marked ourself as down. Are your external " - "addresses reachable?"); - router->is_running = 0; + if (router) { + debug(LD_DIR,"Marking router '%s' as down.",router->nickname); + if (router_is_me(router) && !we_are_hibernating()) + warn(LD_NET, "We just marked ourself as down. Are your external " + "addresses reachable?"); + router->is_running = 0; + } + status = router_get_combined_status_by_digest(digest); + if (status) { + status->status.is_running = 0; + } } /** Add router to the routerlist, if we don't already have it. Replace