[tor-bugs] #8203 [Tor]: Inconsistent stream events when resolving hostname

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Mar 16 18:12:18 UTC 2013


#8203: Inconsistent stream events when resolving hostname
------------------------------------------------------+---------------------
 Reporter:  Desoxy                                    |          Owner:                    
     Type:  defect                                    |         Status:  needs_review      
 Priority:  normal                                    |      Milestone:  Tor: 0.2.4.x-final
Component:  Tor                                       |        Version:                    
 Keywords:  tor-client controller dns 024-deferrable  |         Parent:                    
   Points:                                            |   Actualpoints:                    
------------------------------------------------------+---------------------
Changes (by Desoxy):

  * status:  needs_revision => needs_review


Comment:

 Thank you both for reviewing my patch.

 Regarding the "(Tor_internal)" address and the control spec: The control
 spec specified there would always be a SOURCE_ADDR (when extended events
 were turned on), but it specified that SOURCE_ADDR to be Address ":" Port,
 which means that returning "(Tor_internal):0" was actually violating that
 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

 (...)

        Port = an integer from 0 to 65535 inclusive

 }}}

 I have now changed the patch to simply use the control connection
 informationas SOURCE_ADDR for method 3. This means that a) there is always
 a valid SOURCE_ADDR and b) the control spec does not have to be changed.

 Vidalia: Vidalia uses stream events to display the Tor network map.
 However, it does not particularly care about the StreamStatus, other than
 displaying it to the user. As far as I could see, there are no assumptions
 that a stream has to start with a StreamStatus of "NEW".

 Other controllers: Given that there are 3 different StreamEvent sequences
 that can happen depending on how the resolve request was made, it is a
 fair assumption that any controller relying on new streams having a "NEW"
 StreamStatus would have not worked with all 3 of them anyway. I am very
 much in favor of doing it right this time instead of keeping a duplicate
 "NEW" StreamStatus just to keep some controller library happy. Also, let's
 not forget that the "NEW" StreamStatus would only be sent after the stream
 was already attached to a circuit, while for non-DNS-streams it would be
 sent before the stream was attached to a circuit.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/8203#comment:5>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list