[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r11105: Try to avoid adding duplicate signatures to a consensus. (in tor/trunk: . src/or)



Author: nickm
Date: 2007-08-14 12:39:18 -0400 (Tue, 14 Aug 2007)
New Revision: 11105

Modified:
   tor/trunk/
   tor/trunk/src/or/directory.c
   tor/trunk/src/or/dirvote.c
   tor/trunk/src/or/test.c
Log:
 r14015@Kushana:  nickm | 2007-08-14 12:39:04 -0400
 Try to avoid adding duplicate signatures to a consensus.



Property changes on: tor/trunk
___________________________________________________________________
 svk:merge ticket from /tor/trunk [r14015] on c95137ef-5f19-0410-b913-86e773d04f59

Modified: tor/trunk/src/or/directory.c
===================================================================
--- tor/trunk/src/or/directory.c	2007-08-14 14:30:45 UTC (rev 11104)
+++ tor/trunk/src/or/directory.c	2007-08-14 16:39:18 UTC (rev 11105)
@@ -1415,7 +1415,7 @@
   if (conn->_base.purpose == DIR_PURPOSE_UPLOAD_SIGNATURES) {
     switch (status_code) {
       case 200: {
-        log_notice(LD_DIR,"Uploaded a signatures to dirserver %s:%d",
+        log_notice(LD_DIR,"Uploaded signature(s) to dirserver %s:%d",
                    conn->_base.address, conn->_base.port);
         }
         break;

Modified: tor/trunk/src/or/dirvote.c
===================================================================
--- tor/trunk/src/or/dirvote.c	2007-08-14 14:30:45 UTC (rev 11104)
+++ tor/trunk/src/or/dirvote.c	2007-08-14 16:39:18 UTC (rev 11105)
@@ -803,8 +803,12 @@
           networkstatus_check_voter_signature(target, src_voter, cert);
         }
       }
-      /* If this signature is good, then replace and add. */
-      if (src_voter->good_signature || !target_voter->signature) {
+      /* XXXX020 We want to add signatures for which we don't have the cert,
+       * pending the arrival of the cert information.  But this means we need
+       * to replace them if a better one comes along, and that's not
+       * implemented yet. */
+      /* If this signature is good, then add it. */
+      if (src_voter->good_signature) {
         tor_free(target_voter->signature);
         target_voter->signature =
           tor_memdup(src_voter->signature, src_voter->signature_len);
@@ -1325,6 +1329,9 @@
     log_warn(LD_DIR, "Couldn't parse consensus we generated!");
     goto err;
   }
+  /* 'Check' our own signature, to mark it valid. */
+  networkstatus_check_consensus_signature(consensus);
+
   signatures = networkstatus_get_detached_signatures(consensus);
   if (!signatures) {
     log_warn(LD_DIR, "Couldn't extract signatures.");

Modified: tor/trunk/src/or/test.c
===================================================================
--- tor/trunk/src/or/test.c	2007-08-14 14:30:45 UTC (rev 11104)
+++ tor/trunk/src/or/test.c	2007-08-14 16:39:18 UTC (rev 11105)
@@ -2790,6 +2790,9 @@
     */
     test_eq(2, smartlist_len(dsig2->signatures));
 
+    /* Try adding to con2 twice; verify that nothing changes. */
+    test_eq(0, networkstatus_add_detached_signatures(con2, dsig1, &addition2));
+
     /* Add to con. */
     test_eq(2, networkstatus_add_detached_signatures(con, dsig2, &addition2));
     /* Check signatures */