#33898: Stop modifying addr on connections, and delete real_addr -------------------------------------------+------------------------------- Reporter: teor | Owner: nickm Type: defect | Status: assigned Priority: High | Milestone: Tor: | 0.4.4.x-final Component: Core Tor/Tor | Version: Severity: Normal | Resolution: Keywords: ipv6, technical-debt, prop311 | Actual Points: Parent ID: #33048 | Points: 1 Reviewer: | Sponsor: Sponsor55-can -------------------------------------------+-------------------------------
Comment (by nickm): Okay, I went through all the code that sets or uses addr, real_addr, or address. It is a labyrinth! These fields are used and set in subtly different ways depending on the connection. For most exit connections, the "address" starts out as what we were asked to connect to, and then later the "addr" field is made into whatever we got from DNS lookup. The "address" field is used as a key for the DNS cache too. For linked exit connections, the "addr" appears to be taken from the address of the channel, so it can be copied into the linked dirconn. For hidden service exit connections, the "addr" is set to the local port that we're trying to connect to. For incoming connectnions, addr is initialized from the real remote sockaddr. Unless it's on a unix socket. For listeners, addr is set to the address we're listening on, and address is used for unix sockets to reconnect to that address if we need to rebind later on. For OR connections, addr is changed when we make an outgoing connection in connection_or_init_conn_from_address -- we might be using a different address than we decided initially to connect to if we have a descriptor for a node. Addr is also set by connection_or_check_canonicity when we are receiving an incoming connection. For directory connections, if there is a Forwarded-For header, its contents replace the address field in http_set_address_origin(). This is used to send X-Your-Address-Is, and to annotate descriptors. For entry connections, "address" and "addr" are address that _made_ the request. This also goes for UDP dns queries and controller resolve requests. -- Ticket URL: <https://trac.torproject.org/projects/tor/ticket/33898#comment:9> Tor Bug Tracker & Wiki <https://trac.torproject.org/> The Tor Project: anonymity online
_______________________________________________ tor-bugs mailing list tor-bugs@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs