[tor-commits] [onionoo/master] Fix trivial bug in parsing bridge extra-info descriptors.

karsten at torproject.org karsten at torproject.org
Mon Aug 27 12:34:52 UTC 2018


commit ba53eddc3735191ec8b11a3178c3cb0190460c3e
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Tue Aug 21 12:03:45 2018 +0200

    Fix trivial bug in parsing bridge extra-info descriptors.
    
    If the first thing we'd learn from a bridge was an extra-info
    descriptor, we would not have stored the contained transports. This
    case is very unlikely and has very little effect. Worth fixing anyway.
    Found via code analysis.
---
 .../onionoo/updater/NodeDetailsStatusUpdater.java        | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java b/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
index 7223e5a..1cd989d 100644
--- a/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
+++ b/src/main/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdater.java
@@ -346,14 +346,16 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
         DetailsStatus.class, true, fingerprint);
     if (detailsStatus == null) {
       detailsStatus = new DetailsStatus();
-    } else if (null == detailsStatus.getExtraInfoDescPublished()
-        || descriptor.getPublishedMillis()
-        > detailsStatus.getExtraInfoDescPublished()) {
-      detailsStatus.setExtraInfoDescPublished(
-          descriptor.getPublishedMillis());
-      detailsStatus.setTransports(descriptor.getTransports());
-      this.documentStore.store(detailsStatus, fingerprint);
+    } else if (null != detailsStatus.getExtraInfoDescPublished()
+        && detailsStatus.getExtraInfoDescPublished()
+        >= descriptor.getPublishedMillis()) {
+      /* Already parsed more recent extra-info descriptor from this bridge. */
+      return;
     }
+    detailsStatus.setExtraInfoDescPublished(
+        descriptor.getPublishedMillis());
+    detailsStatus.setTransports(descriptor.getTransports());
+    this.documentStore.store(detailsStatus, fingerprint);
   }
 
   private void processBridgeNetworkStatus(BridgeNetworkStatus status) {





More information about the tor-commits mailing list