summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarsten Loesing <karsten.loesing@gmx.net>2020-03-31 15:03:28 +0200
committerKarsten Loesing <karsten.loesing@gmx.net>2020-03-31 15:03:28 +0200
commitaae785965fb0ada9e56f27b35431d566a6a18f12 (patch)
treec48f51ecb2ffec991883ae6fd0baada91f09c10a
parent7b0e856574067f52d012f744286aaf9903f68cb8 (diff)
Fix inconsistencies between summary/details docs.task-27187
Fixes #27187.
-rw-r--r--CHANGELOG.md4
-rw-r--r--src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java22
2 files changed, 19 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f8666fd..36cdac0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changes in version 8.0-1.2?.? - 2020-0?-??
+ * Medium changes
+ - Fix inconsistencies between ASN/GeoIP/rDNS lookup results in
+ summary and details documents.
+
* Minor changes
- Simplify logging configuration.
diff --git a/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java b/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java
index d59c533..f45d914 100644
--- a/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java
+++ b/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java
@@ -474,10 +474,17 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
updatedNodeStatus = this.knownNodes.get(fingerprint);
String address = nodeStatus.getAddress();
if (address.equals(updatedNodeStatus.getAddress())) {
- /* Only remember the last lookup time if the address has not
- * changed. Otherwise we'll want to do a fresh lookup. */
+ /* Only remember rDNS/GeoIP lookup results if the address has not
+ * changed. Otherwise we'll want to do fresh lookups anyway. */
+ updatedNodeStatus.setVerifiedHostNames(
+ nodeStatus.getVerifiedHostNames());
+ updatedNodeStatus.setUnverifiedHostNames(
+ nodeStatus.getUnverifiedHostNames());
updatedNodeStatus.setLastRdnsLookup(
nodeStatus.getLastRdnsLookup());
+ updatedNodeStatus.setCountryCode(nodeStatus.getCountryCode());
+ updatedNodeStatus.setAsNumber(nodeStatus.getAsNumber());
+ updatedNodeStatus.setAsName(nodeStatus.getAsName());
}
int orPort = nodeStatus.getOrPort();
int dirPort = nodeStatus.getDirPort();
@@ -488,6 +495,10 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
dirPort, orAddressesAndPorts);
if (nodeStatus.getLastSeenMillis()
> updatedNodeStatus.getLastSeenMillis()) {
+ /* Remember everything we learned from more recent consensuses or
+ * bridge network statuses during the last execution. Be sure to only
+ * include attributes here that have been set while processing these
+ * two descriptor types above, and nothing else. */
updatedNodeStatus.setNickname(nodeStatus.getNickname());
updatedNodeStatus.setAddress(address);
updatedNodeStatus.setOrAddressesAndPorts(orAddressesAndPorts);
@@ -498,14 +509,9 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
updatedNodeStatus.setRelayFlags(nodeStatus.getRelayFlags());
updatedNodeStatus.setConsensusWeight(
nodeStatus.getConsensusWeight());
- updatedNodeStatus.setCountryCode(nodeStatus.getCountryCode());
updatedNodeStatus.setDefaultPolicy(
nodeStatus.getDefaultPolicy());
updatedNodeStatus.setPortList(nodeStatus.getPortList());
- updatedNodeStatus.setAsNumber(nodeStatus.getAsNumber());
- updatedNodeStatus.setAsName(nodeStatus.getAsName());
- updatedNodeStatus.setRecommendedVersion(
- nodeStatus.isRecommendedVersion());
updatedNodeStatus.setVersion(nodeStatus.getVersion());
}
if (nodeStatus.getFirstSeenMillis()
@@ -520,6 +526,8 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
nodeStatus.getEffectiveFamily());
updatedNodeStatus.setExtendedFamily(
nodeStatus.getExtendedFamily());
+ updatedNodeStatus.setRecommendedVersion(
+ nodeStatus.isRecommendedVersion());
} else {
updatedNodeStatus = nodeStatus;
this.knownNodes.put(fingerprint, nodeStatus);