]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
r13992@Kushana: nickm | 2007-08-13 16:45:22 -0400
authorNick Mathewson <nickm@torproject.org>
Mon, 13 Aug 2007 20:45:36 +0000 (20:45 +0000)
committerNick Mathewson <nickm@torproject.org>
Mon, 13 Aug 2007 20:45:36 +0000 (20:45 +0000)
 A vote we already have a nd a double-upload are different things.

svn:r11093

src/or/dirvote.c
src/or/routerlist.c

index dd8bc7aa0835e64334e1ecbd6445ef716bc22615..ccaa0f28915ffa0922c6b243236aac507e5d11ea 100644 (file)
@@ -1212,8 +1212,15 @@ dirvote_add_vote(const char *vote_body, const char **msg_out)
       if (! memcmp(v->vote->cert->cache_info.identity_digest,
                    vote->cert->cache_info.identity_digest,
                    DIGEST_LEN)) {
-        log_notice(LD_DIR, "We already have a pending vote from this dir");
-        if (v->vote->published < vote->published) {
+        networkstatus_voter_info_t *vi_old = smartlist_get(v->vote->voters, 0);
+        if (!memcmp(vi_old->vote_digest, vi->vote_digest, DIGEST_LEN)) {
+          /* Ah, it's the same vote. Not a problem. */
+          log_info(LD_DIR, "Discarding a vote we already have.");
+          *msg_out = "ok";
+          goto err;
+        } else if (v->vote->published < vote->published) {
+          log_notice(LD_DIR, "Replacing an older pending vote from this "
+                     "directory.");
           cached_dir_decref(v->vote_body);
           networkstatus_vote_free(v->vote);
           v->vote_body = new_cached_dir(tor_strdup(vote_body),
index 95806fa020589b4cf447c9f571bac4f9ef777e80..41d2888a0f351ba713e98b9455a382518695b7ba 100644 (file)
@@ -184,7 +184,7 @@ router_reload_consensus_networkstatus(void)
 
   tor_snprintf(filename,sizeof(filename),"%s"PATH_SEPARATOR"cached-consensus",
                get_options()->DataDirectory);
-  s = read_file_to_str(filename, RTFS_IGNORE_MISSING, NULL);
+  s = read_file_to_str(filename, RFTS_IGNORE_MISSING, NULL);
   if (!s)
     return 0;