diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-09-07 14:51:55 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-09-07 14:51:55 -0400 |
commit | 41eef6680e814f453cc8eedff415e941429aa627 (patch) | |
tree | 7d2ac796e36d7c5786289a6093a98c66c36dbaad | |
parent | c6ea014b5978a020ca4472345216ba29584db5a9 (diff) | |
parent | dfa6cde4d4de57476ea8381199dfbac1afc245d5 (diff) | |
download | tor-41eef6680e814f453cc8eedff415e941429aa627.tar.gz tor-41eef6680e814f453cc8eedff415e941429aa627.zip |
Merge remote-tracking branch 'origin/maint-0.2.2'
Conflicts:
src/or/dirserv.c
src/or/networkstatus.c
Conflicts were related to routerinfo->node shift.
-rw-r--r-- | changes/bug2649a | 5 | ||||
-rw-r--r-- | changes/bug2649b | 5 | ||||
-rw-r--r-- | doc/tor.1.txt | 7 | ||||
-rw-r--r-- | src/or/config.c | 3 | ||||
-rw-r--r-- | src/or/dirserv.c | 17 | ||||
-rw-r--r-- | src/or/dirvote.h | 2 | ||||
-rw-r--r-- | src/or/networkstatus.c | 2 | ||||
-rw-r--r-- | src/or/or.h | 3 |
8 files changed, 35 insertions, 9 deletions
diff --git a/changes/bug2649a b/changes/bug2649a new file mode 100644 index 0000000000..4ee31ebdb6 --- /dev/null +++ b/changes/bug2649a @@ -0,0 +1,5 @@ + o Minor features: + - Add a VoteOnHidServDirectoriesV2 configuration option to allow + directory authorities to abstain from voting on assignment of + the HSDir consensus flag. Related to bug 2649. + diff --git a/changes/bug2649b b/changes/bug2649b new file mode 100644 index 0000000000..1ff14e5569 --- /dev/null +++ b/changes/bug2649b @@ -0,0 +1,5 @@ + o Minor bugfixes: + - Change the default required uptime for a relay to be accepted as + a HSDir from 24 hours to 25 hours. Bugfix on 0.2.0.10-alpha; + fixes bug 2649. + diff --git a/doc/tor.1.txt b/doc/tor.1.txt index ed9798dd2d..4edee80cea 100644 --- a/doc/tor.1.txt +++ b/doc/tor.1.txt @@ -1285,7 +1285,7 @@ if DirPort is non-zero): **MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**:: Minimum uptime of a v2 hidden service directory to be accepted as such by - authoritative directories. (Default: 24 hours) + authoritative directories. (Default: 25 hours) **DirPort** __PORT__|**auto**:: If this option is nonzero, advertise the directory service on this port. @@ -1437,6 +1437,11 @@ DIRECTORY AUTHORITY SERVER OPTIONS that fine-grained information about nodes can be discarded when it hasn't changed for a given amount of time. (Default: 24 hours) +**VoteOnHidServDirectoriesV2** **0**|**1**:: + When this option is set in addition to **AuthoritativeDirectory**, Tor + votes on whether to accept relays as hidden service directories. + (Default: 1) + HIDDEN SERVICE OPTIONS ---------------------- diff --git a/src/or/config.c b/src/or/config.c index dbc355d728..afcea1f4cd 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -420,7 +420,8 @@ static config_var_t _option_vars[] = { VAR("__HashedControlSessionPassword", LINELIST, HashedControlSessionPassword, NULL), VAR("__OwningControllerProcess",STRING,OwningControllerProcess, NULL), - V(MinUptimeHidServDirectoryV2, INTERVAL, "24 hours"), + V(MinUptimeHidServDirectoryV2, INTERVAL, "25 hours"), + V(VoteOnHidServDirectoriesV2, BOOL, "1"), V(_UsingTestNetworkDefaults, BOOL, "0"), { NULL, CONFIG_TYPE_OBSOLETE, 0, NULL } diff --git a/src/or/dirserv.c b/src/or/dirserv.c index 0ea1ef6489..d22a0538df 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -2301,7 +2301,7 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, routerinfo_t *ri, time_t now, int naming, int listbadexits, - int listbaddirs) + int listbaddirs, int vote_on_hsdirs) { int unstable_version = !tor_version_as_new_as(ri->platform,"0.1.1.16-rc-cvs"); @@ -2340,10 +2340,11 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, } else { rs->is_possible_guard = 0; } + rs->is_bad_directory = listbaddirs && node->is_bad_directory; rs->is_bad_exit = listbadexits && node->is_bad_exit; node->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, node, now); - rs->is_hs_dir = node->is_hs_dir; + rs->is_hs_dir = vote_on_hsdirs && node->is_hs_dir; rs->is_v2_dir = ri->dir_port != 0; if (!strcasecmp(ri->nickname, UNNAMED_ROUTER_NICKNAME)) @@ -2563,6 +2564,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, int naming = options->NamingAuthoritativeDir; int listbadexits = options->AuthDirListBadExits; int listbaddirs = options->AuthDirListBadDirs; + int vote_on_hsdirs = options->VoteOnHidServDirectoriesV2; routerlist_t *rl = router_get_routerlist(); time_t now = time(NULL); time_t cutoff = now - ROUTER_MAX_AGE_TO_PUBLISH; @@ -2629,7 +2631,8 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, vrs = tor_malloc_zero(sizeof(vote_routerstatus_t)); rs = &vrs->status; set_routerstatus_from_routerinfo(rs, node, ri, now, - naming, listbadexits, listbaddirs); + naming, listbadexits, listbaddirs, + vote_on_hsdirs); if (digestmap_get(omit_as_sybil, ri->cache_info.identity_digest)) clear_status_flags_on_sybil(rs); @@ -2706,7 +2709,7 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, v3_out->server_versions = server_versions; v3_out->known_flags = smartlist_create(); smartlist_split_string(v3_out->known_flags, - "Authority Exit Fast Guard HSDir Stable V2Dir Valid", + "Authority Exit Fast Guard Stable V2Dir Valid", 0, SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0); if (vote_on_reachability) smartlist_add(v3_out->known_flags, tor_strdup("Running")); @@ -2718,6 +2721,8 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, smartlist_add(v3_out->known_flags, tor_strdup("Named")); smartlist_add(v3_out->known_flags, tor_strdup("Unnamed")); } + if (vote_on_hsdirs) + smartlist_add(v3_out->known_flags, tor_strdup("HSDir")); smartlist_sort_strings(v3_out->known_flags); if (options->ConsensusParams) { @@ -2780,6 +2785,7 @@ generate_v2_networkstatus_opinion(void) int versioning = options->VersioningAuthoritativeDir; int listbaddirs = options->AuthDirListBadDirs; int listbadexits = options->AuthDirListBadExits; + int vote_on_hsdirs = options->VoteOnHidServDirectoriesV2; const char *contact; char *version_lines = NULL; smartlist_t *routers = NULL; @@ -2874,7 +2880,8 @@ generate_v2_networkstatus_opinion(void) continue; } set_routerstatus_from_routerinfo(&rs, node, ri, now, - naming, listbadexits, listbaddirs); + naming, listbadexits, listbaddirs, + vote_on_hsdirs); if (digestmap_get(omit_as_sybil, ri->cache_info.identity_digest)) clear_status_flags_on_sybil(&rs); diff --git a/src/or/dirvote.h b/src/or/dirvote.h index b6746c6557..d19635173f 100644 --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@ -63,7 +63,7 @@ void set_routerstatus_from_routerinfo(routerstatus_t *rs, node_t *node, routerinfo_t *ri, time_t now, int naming, int listbadexits, - int listbaddirs); + int listbaddirs, int vote_on_hsdirs); void router_clear_status_flags(routerinfo_t *ri); networkstatus_t * dirserv_generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, diff --git a/src/or/networkstatus.c b/src/or/networkstatus.c index 398f041532..7cd9d02c3f 100644 --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@ -2133,7 +2133,7 @@ networkstatus_getinfo_by_purpose(const char *purpose_string, time_t now) if (bridge_auth && ri->purpose == ROUTER_PURPOSE_BRIDGE) dirserv_set_router_is_running(ri, now); /* then generate and write out status lines for each of them */ - set_routerstatus_from_routerinfo(&rs, node, ri, now, 0, 0, 0); + set_routerstatus_from_routerinfo(&rs, node, ri, now, 0, 0, 0, 0); smartlist_add(statuses, networkstatus_getinfo_helper_single(&rs)); }); diff --git a/src/or/or.h b/src/or/or.h index b67afd7900..ff94a3efb3 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2901,8 +2901,11 @@ typedef struct { * we don't need to? */ int HidServDirectoryV2; /**< Do we participate in the HS DHT? */ + int VoteOnHidServDirectoriesV2; /**< As a directory authority, vote on + * assignment of the HSDir flag? */ int MinUptimeHidServDirectoryV2; /**< As directory authority, accept hidden * service directories after what time? */ + int FetchUselessDescriptors; /**< Do we fetch non-running descriptors too? */ int AllDirActionsPrivate; /**< Should every directory action be sent * through a Tor circuit? */ |