Browse Source

Merge remote-tracking branch 'catalyst-oniongit/bug20532_031' into maint-0.3.2

Nick Mathewson 6 years ago
parent
commit
e7126a1030
2 changed files with 12 additions and 0 deletions
  1. 4 0
      changes/bug20532
  2. 8 0
      src/or/bridges.c

+ 4 - 0
changes/bug20532

@@ -0,0 +1,4 @@
+  o Minor bugfixes (bridges):
+    - Overwrite the bridge address earlier in the process of directly
+      retrieving its descriptor, to make sure we reach it on the configured
+      address.  Fixes bug 20532; bugfix on 0.2.0.10-alpha.

+ 8 - 0
src/or/bridges.c

@@ -54,6 +54,8 @@ struct bridge_info_t {
 };
 
 static void bridge_free(bridge_info_t *bridge);
+static void rewrite_node_address_for_bridge(const bridge_info_t *bridge,
+                                            node_t *node);
 
 /** A list of configured bridges. Whenever we actually get a descriptor
  * for one, we add it as an entry guard.  Note that the order of bridges
@@ -574,6 +576,12 @@ launch_direct_bridge_descriptor_fetch(bridge_info_t *bridge)
     return;
   }
 
+  /* If we already have a node_t for this bridge, rewrite its address now. */
+  node_t *node = node_get_mutable_by_id(bridge->identity);
+  if (node) {
+    rewrite_node_address_for_bridge(bridge, node);
+  }
+
   tor_addr_port_t bridge_addrport;
   memcpy(&bridge_addrport.addr, &bridge->addr, sizeof(tor_addr_t));
   bridge_addrport.port = bridge->port;