Kaynağa Gözat

Would-be fix for bug 7733: learn bridge ID from descriptor

If somebody has configured a client to use a bridge without setting
an identity digest (not recommended), learn the identity digest from
whatever bridge descriptor we have downloaded or have in our cache.
Nick Mathewson 12 yıl önce
ebeveyn
işleme
79c875ecdc
1 değiştirilmiş dosya ile 7 ekleme ve 0 silme
  1. 7 0
      src/or/entrynodes.c

+ 7 - 0
src/or/entrynodes.c

@@ -2187,6 +2187,13 @@ learned_bridge_descriptor(routerinfo_t *ri, int from_cache)
       node = node_get_mutable_by_id(ri->cache_info.identity_digest);
       node = node_get_mutable_by_id(ri->cache_info.identity_digest);
       tor_assert(node);
       tor_assert(node);
       rewrite_node_address_for_bridge(bridge, node);
       rewrite_node_address_for_bridge(bridge, node);
+      if (tor_digest_is_zero(bridge->identity)) {
+        memcpy(bridge->identity,ri->cache_info.identity_digest, DIGEST_LEN);
+        log_notice(LD_DIR, "Learned identity %s for bridge at %s:%d",
+                   hex_str(bridge->identity, DIGEST_LEN),
+                   fmt_and_decorate_addr(&bridge->addr),
+                   (int) bridge->port);
+      }
       add_an_entry_guard(node, 1, 1, 0, 0);
       add_an_entry_guard(node, 1, 1, 0, 0);
 
 
       log_notice(LD_DIR, "new bridge descriptor '%s' (%s): %s", ri->nickname,
       log_notice(LD_DIR, "new bridge descriptor '%s' (%s): %s", ri->nickname,