|
@@ -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;
|