[or-cvs] Dont call directory_get_from_dirserver when you have a part...

Nick Mathewson nickm at seul.org
Fri Jan 6 18:19:21 UTC 2006


Update of /home/or/cvsroot/tor/src/or
In directory moria:/tmp/cvs-serv25326/src/or

Modified Files:
	directory.c routerlist.c 
Log Message:
Dont call directory_get_from_dirserver when you have a particular dirserver in mind; remove fetch-from-authority special-case in directory_get_from_dirserver.

Index: directory.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/directory.c,v
retrieving revision 1.334
retrieving revision 1.335
diff -u -p -d -r1.334 -r1.335
--- directory.c	6 Jan 2006 18:05:48 -0000	1.334
+++ directory.c	6 Jan 2006 18:19:17 -0000	1.335
@@ -157,7 +157,7 @@ directory_get_from_dirserver(uint8_t pur
 {
   routerstatus_t *rs = NULL;
   or_options_t *options = get_options();
-  int fetch_fresh_first = server_mode(options) && options->DirPort != 0;
+  int prefer_authority = server_mode(options) && options->DirPort != 0;
   int directconn = !purpose_is_private(purpose);
 
   int need_v1_support = purpose == DIR_PURPOSE_FETCH_DIR ||
@@ -166,17 +166,7 @@ directory_get_from_dirserver(uint8_t pur
                         purpose == DIR_PURPOSE_FETCH_SERVERDESC;
 
   if (directconn) {
-    if (fetch_fresh_first && purpose == DIR_PURPOSE_FETCH_NETWORKSTATUS &&
-        !strcmpstart(resource,"fp/") && strlen(resource) >= HEX_DIGEST_LEN+3) {
-      /* Try to ask the actual dirserver its opinion. */
-      char digest[DIGEST_LEN];
-      trusted_dir_server_t *ds;
-      base16_decode(digest, DIGEST_LEN, resource+3, HEX_DIGEST_LEN);
-      ds = router_get_trusteddirserver_by_digest(digest);
-      if (ds)
-        rs = &(ds->fake_status);
-    }
-    if (!rs && fetch_fresh_first) {
+    if (prefer_authority) {
       /* only ask authdirservers, and don't ask myself */
       rs = router_pick_trusteddirserver(need_v1_support, 1, 1,
                                         retry_if_no_servers);

Index: routerlist.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/routerlist.c,v
retrieving revision 1.417
retrieving revision 1.418
diff -u -p -d -r1.417 -r1.418
--- routerlist.c	5 Jan 2006 10:59:46 -0000	1.417
+++ routerlist.c	6 Jan 2006 18:19:17 -0000	1.418
@@ -2225,8 +2225,11 @@ update_networkstatus_cache_downloads(tim
          strlcpy(resource, "fp/", sizeof(resource));
          base16_encode(resource+3, sizeof(resource)-3, ds->digest, DIGEST_LEN);
          strlcat(resource, ".z", sizeof(resource));
-         directory_get_from_dirserver(DIR_PURPOSE_FETCH_NETWORKSTATUS,
-                                      resource,1);
+         directory_initiate_command_routerstatus(
+               &ds->fake_status, DIR_PURPOSE_FETCH_NETWORKSTATUS,
+               0, /* Not private */
+               resource,
+               NULL, 0 /* No payload. */);
        });
   } else {
     /* A non-authority cache launches one connection to a random authority. */



More information about the tor-commits mailing list