[tor-commits] [metrics-db/master] Download votes when	v3-status-votes file is truncated.
    karsten at torproject.org 
    karsten at torproject.org
       
    Tue Jun 14 19:54:16 UTC 2011
    
    
  
commit ff73f5b6820e6ec6f5156bc265a7c6d413c01719
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Tue Jun 14 21:47:36 2011 +0200
    Download votes when v3-status-votes file is truncated.
    
    In the past, we sometimes had problems rsync'ing the v3-status-votes file
    from gabelmoo and were left with a truncated file.  When parsing this file
    we successfully parsed the complete votes and failed parsing the last,
    truncated vote.  But we however marked this vote as downloaded and made no
    further attempts to download it from the directory authorities.
    
    The fix is to only mark a vote as downloaded if it contains a valid
    directory footer.
---
 .../torproject/ernie/db/RelayDescriptorParser.java |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/src/org/torproject/ernie/db/RelayDescriptorParser.java b/src/org/torproject/ernie/db/RelayDescriptorParser.java
index 089b743..3fdd3d8 100644
--- a/src/org/torproject/ernie/db/RelayDescriptorParser.java
+++ b/src/org/torproject/ernie/db/RelayDescriptorParser.java
@@ -140,11 +140,7 @@ public class RelayDescriptorParser {
             this.aw.storeConsensus(data, validAfter);
           }
         } else {
-          if (this.rdd != null) {
-            this.rdd.haveParsedVote(validAfterTime, fingerprint,
-                serverDescriptors);
-          }
-          if (this.aw != null) {
+          if (this.aw != null || this.rdd != null) {
             String ascii = new String(data, "US-ASCII");
             String startToken = "network-status-version ";
             String sigToken = "directory-signature ";
@@ -155,11 +151,19 @@ public class RelayDescriptorParser {
               byte[] forDigest = new byte[sig - start];
               System.arraycopy(data, start, forDigest, 0, sig - start);
               String digest = DigestUtils.shaHex(forDigest).toUpperCase();
-              this.aw.storeVote(data, validAfter, dirSource, digest);
+              if (this.aw != null) {
+                this.aw.storeVote(data, validAfter, dirSource, digest);
+              }
+              if (this.rdd != null) {
+                this.rdd.haveParsedVote(validAfterTime, fingerprint,
+                    serverDescriptors);
+              }
             }
             if (certificateString != null) {
-              this.aw.storeCertificate(certificateString.getBytes(),
-                  dirSource, dirKeyPublished);
+              if (this.aw != null) {
+                this.aw.storeCertificate(certificateString.getBytes(),
+                    dirSource, dirKeyPublished);
+              }
             }
           }
         }
    
    
More information about the tor-commits
mailing list