Skip to content
Snippets Groups Projects
Commit 7d2a91f5 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

support multihomed bridges (bug 2510)

parent 9a1a96ba
No related branches found
No related tags found
No related merge requests found
o Major bugfixes:
- Fix a bug where bridge users who configure the non-canonical
address of a bridge automatically switch to its canonical
address. If a bridge listens at more than one address, it should be
able to advertise those addresses independently and any non-blocked
addresses should continue to work. Bugfix on Tor 0.2.0.x. Fixes
bug 2510.
......@@ -4670,6 +4670,29 @@ fetch_bridge_descriptors(or_options_t *options, time_t now)
SMARTLIST_FOREACH_END(bridge);
}
/** If our <b>bridge</b> is configured to be a different address than
* the bridge gives in its routerinfo <b>ri</b>, rewrite the routerinfo
* we received to use the address we meant to use. Now we handle
* multihomed bridges better.
*/
static void
rewrite_routerinfo_address_for_bridge(bridge_info_t *bridge, routerinfo_t *ri)
{
tor_addr_t addr;
tor_addr_from_ipv4h(&addr, ri->addr);
if (!tor_addr_compare(&bridge->addr, &addr, CMP_EXACT) &&
bridge->port == ri->or_port)
return; /* they match, so no need to do anything */
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 '%s' to match configured address %s:%d.",
ri->nickname, ri->address, ri->or_port);
}
/** We just learned a descriptor for a bridge. See if that
* digest is in our entry guard list, and add it if not. */
void
......@@ -4688,6 +4711,8 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache)
if (!from_cache)
download_status_reset(&bridge->fetch_status);
rewrite_routerinfo_address_for_bridge(bridge, ri);
add_an_entry_guard(ri, 1);
log_notice(LD_DIR, "new bridge descriptor '%s' (%s)", ri->nickname,
from_cache ? "cached" : "fresh");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment