[tor-bugs] #21345 [Core Tor/Tor]: Do relays count dir reqs as completed before they're complete?

Tor Bug Tracker & Wiki blackhole at torproject.org
Mon Jan 30 06:14:49 UTC 2017


#21345: Do relays count dir reqs as completed before they're complete?
--------------------------+------------------------------------
 Reporter:  arma          |          Owner:
     Type:  task          |         Status:  new
 Priority:  Medium        |      Milestone:  Tor: 0.3.1.x-final
Component:  Core Tor/Tor  |        Version:
 Severity:  Normal        |     Resolution:
 Keywords:                |  Actual Points:
Parent ID:                |         Points:
 Reviewer:                |        Sponsor:
--------------------------+------------------------------------

Comment (by arma):

 Ah ha. Current theory for why it works as intended:
 geoip_change_dirreq_state() has to be called in every intermediate step
 before DIRREQ_CHANNEL_BUFFER_FLUSHED, in order, else it will never run the
 clauses at the end:

 {{{
   if (new_state == DIRREQ_IS_FOR_NETWORK_STATUS)
     return;
   if (new_state - 1 != ent->state)
     return;
   ent->state = new_state;
 }}}

 So that's a call with new_state DIRREQ_FLUSHING_DIR_CONN_FINISHED, and
 another with new_state DIRREQ_END_CELL_SENT, and another with new_state
 DIRREQ_CIRC_QUEUE_FLUSHED, and only then will it care when it receives a
 call with new_state DIRREQ_CHANNEL_BUFFER_FLUSHED. Sneaky.

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


More information about the tor-bugs mailing list