[tor-bugs] #12538 [Tor]: Make all relays automatically be dir caches

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Nov 7 07:13:58 UTC 2014


#12538: Make all relays automatically be dir caches
-------------------------+-------------------------------------------------
     Reporter:           |      Owner:
  cypherpunks            |     Status:  needs_review
         Type:  task     |  Milestone:  Tor: 0.2.6.x-final
     Priority:  normal   |    Version:  Tor: unspecified
    Component:  Tor      |   Keywords:  tor-guard, tor-relay, prop237
   Resolution:           |  026-triaged-1
Actual Points:           |  Parent ID:
       Points:           |
-------------------------+-------------------------------------------------

Comment (by sysrqb):

 Pushed bug12538_prop_squash_1, adding function rename and unit test.


 Replying to [comment:19 dgoulet]:
 > I'm wondering if it would be useful to have "is_directory_server()"
 function that could take a routerinfo_t and test that object to see if
 it's a directory instead of the "options" object parsing?
 >
 > It could then be used with "desc_routerinfo" object representing our
 router information thus fixing the semantic "issue".

 I considered taking a routerinfo_t as a parameter, but I decided against
 it because 1) I wanted to match the signature of server_mode() as closely
 as possible, and 2) this function is only called when a router must decide
 if it serves dir requests, so an or_options_t should be sufficient.

 Until this changes in the future, simply checking the is_v2_dir field of
 another router's routerinfo_t is all that is needed to determine if it is
 a dir server. I think it would be unnecessarily complicated otherwise, so
 I think it's okay that we have different interfaces for answering the
 questions "am I a directory server?" verses "is she a directory server?".

 >
 > Also, I'm a big fan of namespacing function with the file name so this
 function is in "router.c" and public thus maybe should be called
 "router_is_directory_server()" ? (unless there is a coding rules I'm not
 aware of)

 I agree, but I'll follow Nick's suggestions below in this case.


 Replying to [comment:20 nickm]:
 > - In set_routerstatus_from_routerinfo, shouldn't it also set is_v2_dir
 to true if ri->dir_port is nonzero? That's what the proposal says, I
 think.

 {{{
 @@ -2090,6 +2090,7 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs,
    strlcpy(rs->nickname, ri->nickname, sizeof(rs->nickname));
    rs->or_port = ri->or_port;
    rs->dir_port = ri->dir_port;
 +  rs->is_v2_dir = ri->supports_tunnelled_dir_requests;
 }}}

 I don't think it's necessary because supports_tunnelled_dir_requests is
 only set when the descriptor is parsed in router_parse_entry_from_string
 and we set it true if either the dirport is set or "tunnelled-dir-server"
 was in the descriptor. Is there a case I'm missing?

 {{{
 +  /* This router accepts tunnelled directory requests via begindir if it
 has
 +   * an open dirport or it included "tunnelled-dir-server". */
 +  if (find_opt_by_keyword(tokens, K_DIR_TUNNELLED) || router->dir_port >
 0) {
 +    router->supports_tunnelled_dir_requests = 1;
 +  }
 }}}

 > - dir_server_mode() or running_as_dir_server() would be a better name
 for is_directory_server()
 Agreed, let's use the former so it matches server_mode() and
 public_server_mode().

 > - Do we have a test for router_pick_directory_server_impl()? If not,
 should we get one somehow?
 No, and yes.

 It's not a very elegant solution (directly including routerlist.c).
 Alternatively I can make router_pick_directory_server_impl and
 routerlist_insert STATIC or create TOR_UNIT_TESTS-specific wrappers around
 them. The existing non-static wrappers added unnecessary complexity
 considering I'm trying to test a single function, but if using a wrapper
 is more mergeable then I can expand the unit test so that will work. Which
 do you prefer?

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


More information about the tor-bugs mailing list