[tor-bugs] #28982 [Core Tor/Tor]: Refactor GETINFO dir/ so that new tor/ URLs automatically become GETINFOs

Tor Bug Tracker & Wiki blackhole at torproject.org
Sat Jan 19 14:51:53 UTC 2019


#28982: Refactor GETINFO dir/ so that new tor/ URLs automatically become GETINFOs
-----------------------------------------+---------------------------------
 Reporter:  teor                         |          Owner:  rl1987
     Type:  enhancement                  |         Status:  accepted
 Priority:  Medium                       |      Milestone:  Tor:
                                         |  unspecified
Component:  Core Tor/Tor                 |        Version:
 Severity:  Normal                       |     Resolution:
 Keywords:  tor-control, technical-debt  |  Actual Points:
Parent ID:  #7646                        |         Points:
 Reviewer:                               |        Sponsor:
-----------------------------------------+---------------------------------

Comment (by rl1987):

 In dircache.c there is `url_table` - a table that maps URL paths to
 handler functions. I looked into generalizing these handler functions to
 take not just `dir_connection_t` but `control_connection_t` as well. To
 make this happen, we would need to possibly make them talk not just HTTP,
 but Tor Control Protocol as well, which would violate modularity and make
 the code more difficult to work with. I find this approach undesirable
 after trying to write some code.

 Another approach would perhaps be splitting handler function code into two
 layers - data layer subfunctions and communication layer subfunctions. The
 former would return: 1) a (smartlist) of answer(s) to a query; 2) error
 message (if any); 3) status code (succeeded; temperorary failure;
 permanent failure). The latter would make sure that directory document(s)
 are send correctly to a client and takes care of all the details regarding
 underlying protocol (HTTP headers, status code, compression, etc.).
 Existing code we have for `GETINFO dir/*` is similar to this. Taking this
 path would require to do quite a bit of refactoring, but would be
 beneficial to long term health of codebase, as it would provide a way to
 do some separation of concerns.

 Or we can simply implement the missing `GETINFO dir/*` requests in
 control.c and be done with this. I don't see a magic way to simply make
 `GETINFO dir/*` handled for all present and future `HTTP GET /tor/*` APIs.

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


More information about the tor-bugs mailing list