[or-cvs] Change replacement semantics for directory entries: fix bug...

Nick Mathewson nickm at seul.org
Wed Apr 6 00:01:38 UTC 2005


Update of /home/or/cvsroot/tor/src/or
In directory moria.mit.edu:/tmp/cvs-serv13598/src/or

Modified Files:
	dirserv.c 
Log Message:
Change replacement semantics for directory entries: fix bug 121.

Index: dirserv.c
===================================================================
RCS file: /home/or/cvsroot/tor/src/or/dirserv.c,v
retrieving revision 1.150
retrieving revision 1.151
diff -u -d -r1.150 -r1.151
--- dirserv.c	3 Apr 2005 19:01:47 -0000	1.150
+++ dirserv.c	6 Apr 2005 00:01:35 -0000	1.151
@@ -343,8 +343,7 @@
     routerinfo_free(ri);
     *desc = end;
     return -1;
-  }
-  if (r==0) {
+  } else if (r==0) {
     char fp[FINGERPRINT_LEN+1];
     log_fn(LOG_INFO, "Unknown nickname '%s' (%s:%d). Will try to add.",
            ri->nickname, ri->address, ri->or_port);
@@ -382,16 +381,18 @@
   /* Do we already have an entry for this router? */
   for (i = 0; i < smartlist_len(descriptor_list); ++i) {
     ri_old = smartlist_get(descriptor_list, i);
-    if (!strcasecmp(ri->nickname, ri_old->nickname)) {
+    if (!memcmp(ri->identity_digest, ri_old->identity_digest, DIGEST_LEN)) {
       found = i;
       break;
     }
   }
   if (found >= 0) {
+    char hex_digest[HEX_DIGEST_LEN+1];
+    base16_encode(hex_digest, HEX_DIGEST_LEN+1, ri->identity_digest,DIGEST_LEN);
     /* if so, decide whether to update it. */
     if (ri_old->published_on >= ri->published_on) {
       /* We already have a newer or equal-time descriptor */
-      log_fn(LOG_INFO,"We already have a new enough desc for nickname '%s'. Not adding.",ri->nickname);
+      log_fn(LOG_INFO,"We already have a new enough desc for sever %s (nickname '%s'). Not adding.",hex_digest,ri->nickname);
       *msg = "We already have a newer descriptor.";
       /* This isn't really an error; return success. */
       routerinfo_free(ri);
@@ -399,7 +400,7 @@
       return verified;
     }
     /* We don't alrady have a newer one; we'll update this one. */
-    log_fn(LOG_INFO,"Dirserv updating desc for nickname '%s'",ri->nickname);
+    log_fn(LOG_INFO,"Dirserv updating desc for server %s (nickname '%s')",hex_digest,ri->nickname);
     *msg = verified?"Verified server updated":"Unverified server updated. (Have you sent us your key fingerprint?)";
     routerinfo_free(ri_old);
     smartlist_del_keeporder(descriptor_list, found);



More information about the tor-commits mailing list