diff options
author | Roger Dingledine <arma@torproject.org> | 2013-02-09 22:07:22 -0500 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2013-02-09 22:07:22 -0500 |
commit | 74e6a47a808803c985f55b626dff294dbe425043 (patch) | |
tree | 9ba39d530438b96f69a04a698ece46b22939862e /src | |
parent | 002c860caee374688f9478dfd6a6e2ebddad791f (diff) | |
download | tor-74e6a47a808803c985f55b626dff294dbe425043.tar tor-74e6a47a808803c985f55b626dff294dbe425043.tar.gz |
stop setting, or using, router->address
resolves ticket 5528.
Diffstat (limited to 'src')
-rw-r--r-- | src/or/entrynodes.c | 2 | ||||
-rw-r--r-- | src/or/or.h | 1 | ||||
-rw-r--r-- | src/or/router.c | 7 | ||||
-rw-r--r-- | src/or/routerlist.c | 3 | ||||
-rw-r--r-- | src/or/routerparse.c | 3 | ||||
-rw-r--r-- | src/test/test_dir.c | 8 |
6 files changed, 10 insertions, 14 deletions
diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c index 282a9a0ce..263b9f19a 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c @@ -1876,8 +1876,6 @@ rewrite_node_address_for_bridge(const bridge_info_t *bridge, node_t *node) } else { if (tor_addr_family(&bridge->addr) == AF_INET) { ri->addr = tor_addr_to_ipv4h(&bridge->addr); - tor_free(ri->address); - ri->address = tor_dup_ip(ri->addr); ri->or_port = bridge->port; log_info(LD_DIR, "Adjusted bridge routerinfo for '%s' to match configured " diff --git a/src/or/or.h b/src/or/or.h index 04640d050..70a22aa10 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -1925,7 +1925,6 @@ typedef int16_t country_t; /** Information about another onion router in the network. */ typedef struct { signed_descriptor_t cache_info; - char *address; /**< Location of OR: either a hostname or an IP address. */ char *nickname; /**< Human-readable OR name. */ uint32_t addr; /**< IPv4 address of OR, in host order. */ diff --git a/src/or/router.c b/src/or/router.c index c7932d194..f8678ac57 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1759,7 +1759,6 @@ router_rebuild_descriptor(int force) ri = tor_malloc_zero(sizeof(routerinfo_t)); ri->cache_info.routerlist_index = -1; - ri->address = tor_dup_ip(addr); ri->nickname = tor_strdup(options->Nickname); ri->addr = addr; ri->or_port = router_get_advertised_or_port(options); @@ -2218,6 +2217,7 @@ int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, crypto_pk_t *ident_key) { + char *address; char *onion_pkey; /* Onion key, PEM-encoded. */ char *identity_pkey; /* Identity key, PEM-encoded. */ char digest[DIGEST_LEN]; @@ -2292,6 +2292,8 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, } } + address = tor_dup_ip(router->addr); + /* Generate the easy portion of the router descriptor. */ result = tor_snprintf(s, maxlen, "router %s %s %d 0 %d\n" @@ -2307,7 +2309,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, "signing-key\n%s" "%s%s%s%s", router->nickname, - router->address, + address, router->or_port, decide_to_advertise_dirport(options, router->dir_port), extra_or_address ? extra_or_address : "", @@ -2328,6 +2330,7 @@ router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router, options->HidServDirectoryV2 ? "hidden-service-dir\n" : "", options->AllowSingleHopExits ? "allow-single-hop-exits\n" : ""); + tor_free(address); tor_free(family_line); tor_free(onion_pkey); tor_free(identity_pkey); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index 8f1994760..d1ecca575 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -2538,7 +2538,6 @@ routerinfo_free(routerinfo_t *router) return; tor_free(router->cache_info.signed_descriptor_body); - tor_free(router->address); tor_free(router->nickname); tor_free(router->platform); tor_free(router->contact_info); @@ -4743,7 +4742,7 @@ router_differences_are_cosmetic(const routerinfo_t *r1, const routerinfo_t *r2) } /* If any key fields differ, they're different. */ - if (strcasecmp(r1->address, r2->address) || + if (r1->addr != r2->addr || strcasecmp(r1->nickname, r2->nickname) || r1->or_port != r2->or_port || !tor_addr_eq(&r1->ipv6_addr, &r2->ipv6_addr) || diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 2a3de12c3..ce8247dbb 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -1206,8 +1206,7 @@ router_parse_entry_from_string(const char *s, const char *end, log_warn(LD_DIR,"Router nickname is invalid"); goto err; } - router->address = tor_strdup(tok->args[1]); - if (!tor_inet_aton(router->address, &in)) { + if (!tor_inet_aton(tok->args[1], &in)) { log_warn(LD_DIR,"Router address is not an IP address."); goto err; } diff --git a/src/test/test_dir.c b/src/test/test_dir.c index f1c745ef7..150a2acf5 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -94,7 +94,6 @@ test_dir_formats(void) get_platform_str(platform, sizeof(platform)); r1 = tor_malloc_zero(sizeof(routerinfo_t)); - r1->address = tor_strdup("18.244.0.1"); r1->addr = 0xc0a80001u; /* 192.168.0.1 */ r1->cache_info.published_on = 0; r1->or_port = 9000; @@ -121,7 +120,6 @@ test_dir_formats(void) ex2->maskbits = 8; ex2->prt_min = ex2->prt_max = 24; r2 = tor_malloc_zero(sizeof(routerinfo_t)); - r2->address = tor_strdup("1.1.1.1"); r2->addr = 0x0a030201u; /* 10.3.2.1 */ r2->platform = tor_strdup(platform); r2->cache_info.published_on = 5; @@ -145,7 +143,7 @@ test_dir_formats(void) memset(buf, 0, 2048); test_assert(router_dump_router_to_string(buf, 2048, r1, pk2)>0); - strlcpy(buf2, "router Magri 18.244.0.1 9000 0 9003\n" + strlcpy(buf2, "router Magri 192.168.0.1 9000 0 9003\n" "or-address [1:2:3:4::]:9999\n" "platform Tor "VERSION" on ", sizeof(buf2)); strlcat(buf2, get_uname(), sizeof(buf2)); @@ -175,7 +173,7 @@ test_dir_formats(void) cp = buf; rp1 = router_parse_entry_from_string((const char*)cp,NULL,1,0,NULL); test_assert(rp1); - test_streq(rp1->address, r1->address); + test_eq(rp1->addr, r1->addr); test_eq(rp1->or_port, r1->or_port); //test_eq(rp1->dir_port, r1->dir_port); test_eq(rp1->bandwidthrate, r1->bandwidthrate); @@ -198,7 +196,7 @@ test_dir_formats(void) cp = buf; rp2 = router_parse_entry_from_string(&cp,1); test_assert(rp2); - test_streq(rp2->address, r2.address); + test_eq(rp2->addr, r2.addr); test_eq(rp2->or_port, r2.or_port); test_eq(rp2->dir_port, r2.dir_port); test_eq(rp2->bandwidth, r2.bandwidth); |