diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 7d4d563006..ca07310535 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -3487,7 +3487,7 @@ update_router_descriptor_downloads(time_t now) int router_have_minimum_dir_info(void) { - int tot = 0, any_running = 0; + int tot = 0, num_running = 0; int n_ns, res, avg; static int have_enough = 0; if (!networkstatus_list || !routerlist) { @@ -3504,12 +3504,10 @@ router_have_minimum_dir_info(void) avg = tot / n_ns; SMARTLIST_FOREACH(routerstatus_list, local_routerstatus_t *, rs, { - if (rs->status.is_running) { - any_running = 1; - break; - } + if (rs->status.is_running) + num_running++; }); - res = smartlist_len(routerlist->routers) > (avg/4) && any_running; + res = smartlist_len(routerlist->routers) >= (avg/4) && num_running > 2; done: if (res && !have_enough) { log(LOG_NOTICE, LD_DIR,