Controller: Stream event source field is "<unknown address type>:1" for DNS requests from the controller

My patch #8203 (moved) tried to be clever and copied the IP and port of the control connection into the SOURCE field of STREAM_EVENT_NEW_RESOLVE events. As it turns out, the control connection address can be a unix domain socket, which tor_dup_addr helpfully converts to "".

From the control Spec

  Address = ip4-address / ip6-address / hostname   (XXXX Define these)
(...)
"650" SP "STREAM" SP StreamID SP StreamStatus SP CircuitID SP Target
          [SP "REASON=" Reason [ SP "REMOTE_REASON=" Reason ]]
          [SP "SOURCE=" Source] [ SP "SOURCE_ADDR=" Address ":" Port ]
          [SP "PURPOSE=" Purpose]
          CRLF

Previously "(Tor_internal):0" was used, even though it also did not follow the control spec, but the controllers seemed to handle it fine.

My suggestion: If the control connection is via a unix domain socket, use "(Tor_internal)" again. And while we are at it, add (Tor_internal) to the control spec as well.

Trac:
Username: Desoxy

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information