Explorar el Código

Set (and reset) node_t.ipv6_preferred for bridges based on Bridge lines.

We used to set it only when ClientPreferIPv6ORPort was set which seems
wrong.

Fixes one part of #6757.
Linus Nordberg hace 11 años
padre
commit
9c5ba489d3
Se han modificado 1 ficheros con 3 adiciones y 9 borrados
  1. 3 9
      src/or/circuitbuild.c

+ 3 - 9
src/or/circuitbuild.c

@@ -5654,15 +5654,9 @@ rewrite_node_address_for_bridge(const bridge_info_t *bridge, node_t *node)
       }
     }
 
-    /* Mark bridge as preferably connected to over IPv6 if its IPv6
-       address is in a Bridge line and ClientPreferIPv6ORPort is
-       set. Unless both is true, a potential IPv6 OR port of this
-       bridge won't get selected.
-
-       XXX ipv6_preferred is never reset (#6757) */
-    if (get_options()->ClientPreferIPv6ORPort == 1 &&
-        tor_addr_family(&bridge->addr) == AF_INET6)
-      node->ipv6_preferred = 1;
+    /* Mark which address to use based on which bridge_t we got. */
+    node->ipv6_preferred = (tor_addr_family(&bridge->addr) == AF_INET6 &&
+                            !tor_addr_is_null(&node->ri->ipv6_addr));
 
     /* XXXipv6 we lack support for falling back to another address for
        the same relay, warn the user */