commit f89c6196797a6a4b485b3a5eb8788e36eacd9819 Author: Linus Nordberg linus@nordberg.se Date: Thu Nov 24 18:59:24 2011 +0100
Use the preferred address and port when initiating a connection.
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 | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/or/connection_or.c b/src/or/connection_or.c index 6990952..771e889 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -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);