From: Matthew Finkel Date: Mon, 25 May 2015 23:09:33 +0000 (+0000) Subject: A router must be a dir cache before it may be HSDir X-Git-Tag: tor-0.2.8.1-alpha~90^2~3^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb80a748eab12c246afc093801ea0b3c52543955;p=thirdparty%2Ftor.git A router must be a dir cache before it may be HSDir Fixes #15801 --- diff --git a/src/or/dirserv.c b/src/or/dirserv.c index fc6899b3c8..620d324704 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1350,8 +1350,9 @@ dirserv_thinks_router_is_unreliable(time_t now, } /** Return true iff router should be assigned the "HSDir" flag. + * * Right now this means it advertises support for it, it has a high uptime, - * it has a DirPort open, it has the Stable and Fast flag and it's currently + * it's a directory cache, it has the Stable and Fast flags, and it's currently * considered Running. * * This function needs to be called after router-\>is_running has @@ -1378,7 +1379,8 @@ dirserv_thinks_router_is_hs_dir(const routerinfo_t *router, else uptime = real_uptime(router, now); - return (router->wants_to_be_hs_dir && router->dir_port && + return (router->wants_to_be_hs_dir && + router->supports_tunnelled_dir_requests && node->is_stable && node->is_fast && uptime >= get_options()->MinUptimeHidServDirectoryV2 && router_is_active(router, node, now)); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 227046b7b1..853c07d58c 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -4905,7 +4905,8 @@ router_differences_are_cosmetic(const routerinfo_t *r1, const routerinfo_t *r2) strcasecmp(r1->contact_info, r2->contact_info)) || r1->is_hibernating != r2->is_hibernating || cmp_addr_policies(r1->exit_policy, r2->exit_policy) || - r1->dir_cache != r2->dir_cache) + (r1->supports_tunnelled_dir_requests != + r2->supports_tunnelled_dir_requests)) return 0; if ((r1->declared_family == NULL) != (r2->declared_family == NULL)) return 0;