[tor-bugs] #13737 [Tor]: Implement circuit building crypto to worker

Tor Bug Tracker & Wiki blackhole at torproject.org
Wed Dec 9 20:18:16 UTC 2015


#13737: Implement circuit building crypto to worker
-------------------------------------------------+-------------------------
 Reporter:  dgoulet                              |          Owner:
     Type:  enhancement                          |         Status:
 Priority:  Medium                               |  needs_revision
Component:  Tor                                  |      Milestone:  Tor:
 Severity:  Normal                               |  0.2.8.x-final
 Keywords:  tor-client, tor-hs, multicore,       |        Version:  Tor:
  performance, 027-triaged-1-in                  |  0.2.7
Parent ID:                                       |     Resolution:
  Sponsor:                                       |  Actual Points:
                                                 |         Points:  small-
                                                 |  remaning
-------------------------------------------------+-------------------------
Changes (by nickm):

 * status:  needs_review => needs_revision


Comment:

 1b150bcb9d54ccfe132b3e58ee9ef5f001f70221 -- looks ok.

 3e75d22bd496c1238cabee25b8616ea6b02805d8
    * The fields in origin_entry_t need documentation. What are they for?
 Who sets them?  The type itself could also use some explicitness. How do
 they get removed? How do they get removed when the origin_circuit_dies?
    * origin_entry_t and origin_queue could use a friendlier name, maybe
 with "pending_cpu" or "pending_crypto" in it.
    * All arguments of origin_pending_add should be documented.  It should
 document which items it takes ownership of.  It should also document
 whether it gives items to cpuworkers, or if not, who does?
    * In origin_next_task, must the caller also free hop_out?
    * origin_pending_remove has no documentation.
    * I am fine with having this linear search in origin_pending_remove(),
 but we should probably have an XXX about it.
    * Since CIRC_STATE_ONIONSKIN_PENDING can now mean something a little
 different than before, its documentation should be updated.
    * I am not in love with having total_pending_tasks and
 max_pending_tasks be shared by both types of work. (This speaks to the
 'queue_pending_tasks' thing.)
    * I would like to have queue_pending_*_tasks have a more obvious end
 condition; I'm worried about infinite loops.
    * [META]: I assume this is duplicated from existing code, but I don't
 like how assign_onionskin_client_to_cpuworker() can return -1 for "I
 queued the work for later and -1 for "I tried to add the job, but
 threadpool_queue_work failed!"

 META:
    * Do we really need to have two separate queues here, one for pre-
 queued stuff and one for stuff  that's on a workqueue?  Why not just put
 stuff straight on the workqueue?

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


More information about the tor-bugs mailing list