diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/or/routerlist.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 66ca2bf47..52abe85fc 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -4918,6 +4918,7 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, { int start, found, n_added = 0, i; networkstatus_t *c = networkstatus_get_latest_consensus(); + int use_begindir = get_options()->TunnelDirConns; if (!c || !smartlist_len(c->routerstatus_list)) { log_warn(LD_REND, "We don't have a consensus, so we can't perform v2 " "rendezvous operations."); @@ -4930,9 +4931,14 @@ hid_serv_get_responsible_directories(smartlist_t *responsible_dirs, do { routerstatus_t *r = smartlist_get(c->routerstatus_list, i); if (r->is_hs_dir) { - smartlist_add(responsible_dirs, r); + if (r->dir_port || use_begindir) + smartlist_add(responsible_dirs, r); + else + log_info(LD_REND, "Not adding router '%s' to list of responsible " + "hidden service directories, because we have no way of " + "reaching it.", r->nickname); if (++n_added == REND_NUMBER_OF_CONSECUTIVE_REPLICAS) - return 0; + break; } if (++i == smartlist_len(c->routerstatus_list)) i = 0; |