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

nickm at torproject.org nickm at torproject.org
Tue Feb 22 06:02:49 UTC 2011


commit d120ee1c63ec52e23f24f3f4f9f80a9896381406
Merge: b99a8d5 19e5b4c
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue Feb 22 01:03:06 2011 -0500

    Merge remote branch 'origin/maint-0.2.2'

 changes/bug2572 |    5 +++++
 src/or/router.c |    2 +-
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --combined src/or/router.c
index 56f44cc,59276ba..ed998e4
--- 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));
    }
  }
  
@@@ -631,7 -629,7 +631,7 @@@ init_keys(void
    /* 4. Build our router descriptor. */
    /* Must be called after keys are initialized. */
    mydesc = router_get_my_descriptor();
-   if (authdir_mode(options)) {
+   if (authdir_mode_handles_descs(options, ROUTER_PURPOSE_GENERAL)) {
      const char *m = NULL;
      routerinfo_t *ri;
      /* We need to add our own fingerprint so it gets recognized. */
@@@ -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);
@@@ -887,7 -882,7 +887,7 @@@ voi
  router_orport_found_reachable(void)
  {
    if (!can_reach_or_port) {
 -    routerinfo_t *me = router_get_my_routerinfo();
 +    const routerinfo_t *me = router_get_my_routerinfo();
      log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
                 "the outside. Excellent.%s",
                 get_options()->_PublishServerDescriptor != NO_AUTHORITY ?
@@@ -910,7 -905,7 +910,7 @@@ voi
  router_dirport_found_reachable(void)
  {
    if (!can_reach_dir_port) {
 -    routerinfo_t *me = router_get_my_routerinfo();
 +    const routerinfo_t *me = router_get_my_routerinfo();
      log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
                 "from the outside. Excellent.");
      can_reach_dir_port = 1;
@@@ -1181,7 -1176,7 +1181,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 -1270,7 +1275,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 -1289,7 +1294,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 -1341,8 +1346,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 -1352,9 +1355,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;
  }
  
@@@ -1417,12 -1416,13 +1417,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)
@@@ -1431,12 -1431,13 +1431,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) &&
@@@ -1456,21 -1457,19 +1456,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);
@@@ -1531,6 -1530,8 +1531,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));
    }
@@@ -2023,12 -2024,6 +2023,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 &&
@@@ -2051,11 -2046,6 +2051,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) {
@@@ -2194,15 -2184,10 +2194,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