[tor-bugs] #2297 [Tor Client]: fetching certs for legacy keys?

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Fri Dec 17 05:46:34 UTC 2010


#2297: fetching certs for legacy keys?
------------------------+---------------------------------------------------
 Reporter:  arma        |       Owner:                    
     Type:  defect      |      Status:  new               
 Priority:  normal      |   Milestone:  Tor: 0.2.3.x-final
Component:  Tor Client  |     Version:  Tor: unspecified  
 Keywords:              |      Parent:                    
------------------------+---------------------------------------------------
 Ian complaints at http://archives.seul.org/or/dev/Dec-2010/msg00001.html
 that Tor 0.2.3.x sees:
 {{{
 Dec 02 08:13:06.000 [notice] We're missing a certificate from authority
 with signing key F7C7B9191C74C0BA07363C84D37BBAD3A8A6C6D8: launching
 request.
 Dec 02 08:13:06.000 [notice] We're missing a certificate from authority
 with signing key 604834622B54F2D9BA39B34AC53924546733AA60: launching
 request.
 }}}

 Our friend boboper posts a suggested fix at
 http://pastebin.com/raw.php?i=QFXB1Phb which I reproduce here:
 {{{
 --- dirserv.h.orig      Wed Dec 15 04:32:04 2010
 +++ dirserv.h   Thu Dec 16 08:03:54 2010
 @@ -64,6 +64,7 @@
  int directory_fetches_dir_info_later(or_options_t *options);
  int directory_caches_v2_dir_info(or_options_t *options);
  #define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o)
 +int directory_caches_distribute_dir_info(or_options_t *options);
  int directory_caches_dir_info(or_options_t *options);
  int directory_permits_begindir_requests(or_options_t *options);
  int directory_permits_controller_requests(or_options_t *options);

 --- dirserv.c.orig      Wed Dec 15 04:32:04 2010
 +++ dirserv.c   Thu Dec 16 08:06:28 2010
 @@ -1237,9 +1237,18 @@
   * and we're willing to serve them to others. Else return 0.
   */
  int
 +directory_caches_distribute_dir_info(or_options_t *options)
 +{
 +  return options->BridgeRelay != 0 || options->DirPort != 0;
 +}
 +
 +/** Return 1 if we want to keep descriptors, networkstatuses, etc around
 + * for themself or we're willing to serve them to others. Else return 0.
 + */
 +int
  directory_caches_dir_info(or_options_t *options)
  {
 -  if (options->BridgeRelay || options->DirPort)
 +  if (directory_caches_distribute_dir_info(options)) /* distribute stuff
 */
      return 1;
    if (!server_mode(options) || !advertised_server_mode())
      return 0;

 --- routerlist.c.orig   Wed Dec 15 04:32:04 2010
 +++ routerlist.c        Thu Dec 16 08:03:30 2010
 @@ -227,7 +227,7 @@
                 "signing key %s", from_store ? "cached" : "downloaded",
                 ds->nickname,
 hex_str(cert->signing_key_digest,DIGEST_LEN));
      } else {
 -      int adding = directory_caches_dir_info(get_options());
 +      int adding = directory_caches_distribute_dir_info(get_options());
        log_info(LD_DIR, "%s %s certificate for unrecognized directory "
                 "authority with signing key %s",
                 adding ? "Adding" : "Not adding",
 @@ -478,7 +478,7 @@
    smartlist_t *missing_digests;
    char *resource = NULL;
    cert_list_t *cl;
 -  const int cache = directory_caches_dir_info(get_options());
 +  const int cache = directory_caches_distribute_dir_info(get_options());

    if (should_delay_dir_fetches(get_options()))
      return;
 }}}

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


More information about the tor-bugs mailing list