]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Use the preferred address and port when initiating a connection.
authorLinus Nordberg <linus@nordberg.se>
Thu, 24 Nov 2011 17:59:24 +0000 (18:59 +0100)
committerNick Mathewson <nickm@torproject.org>
Wed, 30 Nov 2011 16:55:46 +0000 (11:55 -0500)
This is not as conservative as we could do it, f.ex. by looking at the
connection and only do this for connections to bridges.  A non-bridge
should never have anything else than its primary IPv4 address set
though, so I think this is safe.

src/or/connection_or.c

index 6990952e94f679099fe3a425f6da07df953298d1..771e889c91a57bcfc01ca7a325f726e98e990245 100644 (file)
@@ -648,8 +648,9 @@ connection_or_init_conn_from_address(or_connection_t *conn,
   tor_addr_copy(&conn->real_addr, addr);
   if (r) {
     tor_addr_t node_addr;
-    node_get_addr(r, &node_addr);
-    /* XXXX proposal 118 will make this more complex. */
+    node_get_pref_addr(r, &node_addr);
+    /* XXXX proposal 186 is making this more complex.  For now, a conn
+       is canonical when it uses the _preferred_ address. */
     if (tor_addr_eq(&conn->_base.addr, &node_addr))
       conn->is_canonical = 1;
     if (!started_here) {
@@ -664,7 +665,7 @@ connection_or_init_conn_from_address(or_connection_t *conn,
        * log the "right" port too, so we know if it's moria1 or moria2.
        */
       tor_addr_copy(&conn->_base.addr, &node_addr);
-      conn->_base.port = node_get_orport(r);
+      conn->_base.port = node_get_pref_orport(r);
     }
     conn->nickname = tor_strdup(node_get_nickname(r));
     tor_free(conn->_base.address);