[tor-commits] [tor/master] Merge remote branch 'origin/maint-0.2.2'

nickm at torproject.org nickm at torproject.org
Mon Mar 14 21:22:26 UTC 2011


commit ebf6786ab3597ec96ef2c026d7dc32c26fbc84e4
Merge: 50c9d31 b97d9ab
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Mar 14 17:22:38 2011 -0400

    Merge remote branch 'origin/maint-0.2.2'
    
    Fixed conflict: router_get_my_routerinfo now returns const
    
    Conflicts:
    	src/or/router.c

 changes/bug1172 |    9 +++++++++
 src/or/router.c |   20 +++++---------------
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --combined src/or/router.c
index 3f1a0a0,c15b9b2..eb4d6b5
--- a/src/or/router.c
+++ b/src/or/router.c
@@@ -7,7 -7,6 +7,7 @@@
  #define ROUTER_PRIVATE
  
  #include "or.h"
 +#include "circuitbuild.h"
  #include "circuitlist.h"
  #include "circuituse.h"
  #include "config.h"
@@@ -20,7 -19,6 +20,7 @@@
  #include "hibernate.h"
  #include "main.h"
  #include "networkstatus.h"
 +#include "nodelist.h"
  #include "policies.h"
  #include "relay.h"
  #include "rephist.h"
@@@ -152,8 -150,8 +152,8 @@@ assert_identity_keys_ok(void
    } else {
      /* assert that we have set the client and server keys to be unequal */
      if (server_identitykey)
 -       tor_assert(0!=crypto_pk_cmp_keys(client_identitykey,
 -                                        server_identitykey));
 +      tor_assert(0!=crypto_pk_cmp_keys(client_identitykey,
 +                                       server_identitykey));
    }
  }
  
@@@ -849,21 -847,18 +849,21 @@@ decide_to_advertise_dirport(or_options_
  void
  consider_testing_reachability(int test_or, int test_dir)
  {
 -  routerinfo_t *me = router_get_my_routerinfo();
 +  const routerinfo_t *me = router_get_my_routerinfo();
    int orport_reachable = check_whether_orport_reachable();
    tor_addr_t addr;
    if (!me)
      return;
  
    if (test_or && (!orport_reachable || !circuit_enough_testing_circs())) {
 +    extend_info_t *ei;
      log_info(LD_CIRC, "Testing %s of my ORPort: %s:%d.",
               !orport_reachable ? "reachability" : "bandwidth",
               me->address, me->or_port);
 -    circuit_launch_by_router(CIRCUIT_PURPOSE_TESTING, me,
 -                             CIRCLAUNCH_NEED_CAPACITY|CIRCLAUNCH_IS_INTERNAL);
 +    ei = extend_info_from_router(me);
 +    circuit_launch_by_extend_info(CIRCUIT_PURPOSE_TESTING, ei,
 +                            CIRCLAUNCH_NEED_CAPACITY|CIRCLAUNCH_IS_INTERNAL);
 +    extend_info_free(ei);
    }
  
    tor_addr_from_ipv4h(&addr, me->addr);
@@@ -886,19 -881,14 +886,14 @@@
  void
  router_orport_found_reachable(void)
  {
-   if (!can_reach_or_port) {
-     const routerinfo_t *me = router_get_my_routerinfo();
 -  routerinfo_t *me = router_get_my_routerinfo();
++  const routerinfo_t *me = router_get_my_routerinfo();
+   if (!can_reach_or_port && me) {
      log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
                 "the outside. Excellent.%s",
                 get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
                   " Publishing server descriptor." : "");
      can_reach_or_port = 1;
      mark_my_descriptor_dirty();
-     if (!me) { /* should never happen */
-       log_warn(LD_BUG, "ORPort found reachable, but I have no routerinfo "
-                "yet. Failing to inform controller of success.");
-       return;
-     }
      control_event_server_status(LOG_NOTICE,
                                  "REACHABILITY_SUCCEEDED ORADDRESS=%s:%d",
                                  me->address, me->or_port);
@@@ -909,18 -899,13 +904,13 @@@
  void
  router_dirport_found_reachable(void)
  {
-   if (!can_reach_dir_port) {
-     const routerinfo_t *me = router_get_my_routerinfo();
 -  routerinfo_t *me = router_get_my_routerinfo();
++  const routerinfo_t *me = router_get_my_routerinfo();
+   if (!can_reach_dir_port && me) {
      log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
                 "from the outside. Excellent.");
      can_reach_dir_port = 1;
-     if (!me || decide_to_advertise_dirport(get_options(), me->dir_port))
+     if (decide_to_advertise_dirport(get_options(), me->dir_port))
        mark_my_descriptor_dirty();
-     if (!me) { /* should never happen */
-       log_warn(LD_BUG, "DirPort found reachable, but I have no routerinfo "
-                "yet. Failing to inform controller of success.");
-       return;
-     }
      control_event_server_status(LOG_NOTICE,
                                  "REACHABILITY_SUCCEEDED DIRADDRESS=%s:%d",
                                  me->address, me->dir_port);
@@@ -1181,7 -1166,7 +1171,7 @@@ static int desc_needs_upload = 0
  void
  router_upload_dir_desc_to_dirservers(int force)
  {
 -  routerinfo_t *ri;
 +  const routerinfo_t *ri;
    extrainfo_t *ei;
    char *msg;
    size_t desc_len, extra_len = 0, total_len;
@@@ -1275,7 -1260,7 +1265,7 @@@ router_extrainfo_digest_is_me(const cha
  
  /** A wrapper around router_digest_is_me(). */
  int
 -router_is_me(routerinfo_t *router)
 +router_is_me(const routerinfo_t *router)
  {
    return router_digest_is_me(router->cache_info.identity_digest);
  }
@@@ -1294,7 -1279,7 +1284,7 @@@ router_fingerprint_is_me(const char *fp
  
  /** Return a routerinfo for this OR, rebuilding a fresh one if
   * necessary.  Return NULL on error, or if called on an OP. */
 -routerinfo_t *
 +const routerinfo_t *
  router_get_my_routerinfo(void)
  {
    if (!server_mode(get_options()))
@@@ -1346,6 -1331,8 +1336,6 @@@ static int router_guess_address_from_di
  int
  router_pick_published_address(or_options_t *options, uint32_t *addr)
  {
 -  char buf[INET_NTOA_BUF_LEN];
 -  struct in_addr a;
    if (resolve_my_address(LOG_INFO, options, addr, NULL) < 0) {
      log_info(LD_CONFIG, "Could not determine our address locally. "
               "Checking if directory headers provide any hints.");
@@@ -1355,7 -1342,9 +1345,7 @@@
        return -1;
      }
    }
 -  a.s_addr = htonl(*addr);
 -  tor_inet_ntoa(&a, buf, sizeof(buf));
 -  log_info(LD_CONFIG,"Success: chose address '%s'.", buf);
 +  log_info(LD_CONFIG,"Success: chose address '%s'.", fmt_addr32(*addr));
    return 0;
  }
  
@@@ -1422,12 -1411,13 +1412,12 @@@ router_rebuild_descriptor(int force
    ri->policy_is_reject_star =
      policy_is_reject_star(ri->exit_policy);
  
 -  if (desc_routerinfo) { /* inherit values */
 -    ri->is_valid = desc_routerinfo->is_valid;
 -    ri->is_running = desc_routerinfo->is_running;
 -    ri->is_named = desc_routerinfo->is_named;
 -  }
 +#if 0
 +  /* XXXX NM NM I belive this is safe to remove */
    if (authdir_mode(options))
      ri->is_valid = ri->is_named = 1; /* believe in yourself */
 +#endif
 +
    if (options->MyFamily) {
      smartlist_t *family;
      if (!warned_nonexistent_family)
@@@ -1436,12 -1426,13 +1426,12 @@@
      ri->declared_family = smartlist_create();
      smartlist_split_string(family, options->MyFamily, ",",
        SPLIT_SKIP_SPACE|SPLIT_SKIP_SPACE|SPLIT_IGNORE_BLANK, 0);
 -    SMARTLIST_FOREACH(family, char *, name,
 -     {
 -       routerinfo_t *member;
 +    SMARTLIST_FOREACH_BEGIN(family, char *, name) {
 +       const node_t *member;
         if (!strcasecmp(name, options->Nickname))
 -         member = ri;
 +         goto skip; /* Don't list ourself, that's redundant */
         else
 -         member = router_get_by_nickname(name, 1);
 +         member = node_get_by_nickname(name, 1);
         if (!member) {
           int is_legal = is_legal_nickname_or_hexdigest(name);
           if (!smartlist_string_isin(warned_nonexistent_family, name) &&
@@@ -1461,21 -1452,19 +1451,21 @@@
             smartlist_add(ri->declared_family, name);
             name = NULL;
           }
 -       } else if (router_is_me(member)) {
 +       } else if (router_digest_is_me(member->identity)) {
           /* Don't list ourself in our own family; that's redundant */
 +         /* XXX shouldn't be possible */
         } else {
           char *fp = tor_malloc(HEX_DIGEST_LEN+2);
           fp[0] = '$';
           base16_encode(fp+1,HEX_DIGEST_LEN+1,
 -                       member->cache_info.identity_digest, DIGEST_LEN);
 +                       member->identity, DIGEST_LEN);
           smartlist_add(ri->declared_family, fp);
           if (smartlist_string_isin(warned_nonexistent_family, name))
             smartlist_string_remove(warned_nonexistent_family, name);
         }
 +    skip:
         tor_free(name);
 -     });
 +    } SMARTLIST_FOREACH_END(name);
  
      /* remove duplicates from the list */
      smartlist_sort_strings(ri->declared_family);
@@@ -1536,6 -1525,8 +1526,6 @@@
                           strlen(ri->cache_info.signed_descriptor_body),
                           ri->cache_info.signed_descriptor_digest);
  
 -  routerinfo_set_country(ri);
 -
    if (ei) {
      tor_assert(! routerinfo_incompatible_with_extrainfo(ri, ei, NULL, NULL));
    }
@@@ -2026,12 -2017,6 +2016,12 @@@ extrainfo_dump_to_string(char **s_out, 
    tor_free(bandwidth_usage);
    smartlist_add(chunks, pre);
  
 +  if (geoip_is_loaded()) {
 +    char *chunk=NULL;
 +    tor_asprintf(&chunk, "geoip-db-digest %s\n", geoip_db_digest());
 +    smartlist_add(chunks, chunk);
 +  }
 +
    if (options->ExtraInfoStatistics && write_stats_to_extrainfo) {
      log_info(LD_GENERAL, "Adding stats to extra-info descriptor.");
      if (options->DirReqStatistics &&
@@@ -2054,11 -2039,6 +2044,11 @@@
                          "exit-stats-end", now, &contents) > 0) {
        smartlist_add(chunks, contents);
      }
 +    if (options->ConnDirectionStatistics &&
 +        load_stats_file("stats"PATH_SEPARATOR"conn-stats",
 +                        "conn-bi-direct", now, &contents) > 0) {
 +      smartlist_add(chunks, contents);
 +    }
    }
  
    if (should_record_bridge_info(options) && write_stats_to_extrainfo) {
@@@ -2197,15 -2177,10 +2187,15 @@@ is_legal_hexdigest(const char *s
  void
  router_get_verbose_nickname(char *buf, const routerinfo_t *router)
  {
 +  const char *good_digest = networkstatus_get_router_digest_by_nickname(
 +                                                         router->nickname);
 +  int is_named = good_digest && !memcmp(good_digest,
 +                                        router->cache_info.identity_digest,
 +                                        DIGEST_LEN);
    buf[0] = '$';
    base16_encode(buf+1, HEX_DIGEST_LEN+1, router->cache_info.identity_digest,
                  DIGEST_LEN);
 -  buf[1+HEX_DIGEST_LEN] = router->is_named ? '=' : '~';
 +  buf[1+HEX_DIGEST_LEN] = is_named ? '=' : '~';
    strlcpy(buf+1+HEX_DIGEST_LEN+1, router->nickname, MAX_NICKNAME_LEN+1);
  }
  



More information about the tor-commits mailing list