From: Nick Mathewson Date: Wed, 7 Sep 2011 18:51:55 +0000 (-0400) Subject: Merge remote-tracking branch 'origin/maint-0.2.2' X-Git-Tag: tor-0.2.3.4-alpha~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=41eef6680e814f453cc8eedff415e941429aa627;p=thirdparty%2Ftor.git 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. --- 41eef6680e814f453cc8eedff415e941429aa627 diff --cc src/or/dirserv.c index 0ea1ef6489,66079018ab..d22a0538df --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@@ -2297,11 -2260,9 +2297,11 @@@ get_possible_sybil_list(const smartlist */ void set_routerstatus_from_routerinfo(routerstatus_t *rs, - routerinfo_t *ri, time_t now, + node_t *node, + 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 -2303,10 +2340,11 @@@ } else { rs->is_possible_guard = 0; } - rs->is_bad_directory = listbaddirs && ri->is_bad_directory; - rs->is_bad_exit = listbadexits && ri->is_bad_exit; - ri->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, now); - rs->is_hs_dir = vote_on_hsdirs && ri->is_hs_dir; ++ + 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)) @@@ -2628,8 -2601,9 +2630,9 @@@ dirserv_generate_networkstatus_vote_obj vrs = tor_malloc_zero(sizeof(vote_routerstatus_t)); rs = &vrs->status; - set_routerstatus_from_routerinfo(rs, ri, now, + 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); @@@ -2868,13 -2849,10 +2874,14 @@@ generate_v2_networkstatus_opinion(void if (ri->cache_info.published_on >= cutoff) { routerstatus_t rs; char *version = version_from_platform(ri->platform); - - set_routerstatus_from_routerinfo(&rs, ri, now, + node_t *node = node_get_mutable_by_id(ri->cache_info.identity_digest); + if (!node) { + tor_free(version); + 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 --cc src/or/dirvote.h index b6746c6557,de11fcf997..d19635173f --- a/src/or/dirvote.h +++ b/src/or/dirvote.h @@@ -60,10 -60,9 +60,10 @@@ const char *dirvote_get_pending_detache #define DGV_INCLUDE_PREVIOUS 4 const cached_dir_t *dirvote_get_vote(const char *fp, int flags); 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 --cc src/or/networkstatus.c index 398f041532,b0ef74b02e..7cd9d02c3f --- a/src/or/networkstatus.c +++ b/src/or/networkstatus.c @@@ -2133,7 -2105,7 +2133,7 @@@ networkstatus_getinfo_by_purpose(const 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, ri, now, 0, 0, 0, 0); ++ set_routerstatus_from_routerinfo(&rs, node, ri, now, 0, 0, 0, 0); smartlist_add(statuses, networkstatus_getinfo_helper_single(&rs)); });