[tor-commits] [doctor/master] Don't drop relays with identical nicknames

atagar at torproject.org atagar at torproject.org
Mon Sep 30 22:16:50 UTC 2013


commit 1586ad248bf0ce994bcdb1ffe0261bb829ac59ee
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Sep 30 14:55:03 2013 -0700

    Don't drop relays with identical nicknames
    
    When our sybil checker sends notifications it sorts the relays by their
    nickname. To do this I constructed a 'nickname => descriptor' hash, but I
    forgot nicknames are not always unique. Actually, they very frequently aren't
    due to Unnamed entries.
    
    Constructing a 'nickname => [list of descriptors]' hash instead. Caught by
    Linus when yatei had an outage since we claimed 60 new relays but only listed
    34.
---
 sybil_checker.py |   13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/sybil_checker.py b/sybil_checker.py
index 56f344f..af7c39e 100755
--- a/sybil_checker.py
+++ b/sybil_checker.py
@@ -62,14 +62,19 @@ def main():
 
 
 def send_email(new_relays):
-  # constructs a mapping of nicknames to router status entries so we can provide a listing that's sorted by nicknames
+  # Constructs a mapping of nicknames to router status entries so we can
+  # provide a listing that's sorted by nicknames.
+
+  nickname_to_relay = {}
+
+  for entry in new_relays:
+    nickname_to_relay.setdefault(entry.nickname, []).append(entry)
 
-  nickname_to_relay = dict((entry.nickname, entry) for entry in new_relays)
   relay_entries = []
 
   for nickname in sorted(nickname_to_relay.keys()):
-    relay = nickname_to_relay[nickname]
-    relay_entries.append(RELAY_ENTRY % (relay.nickname, relay.fingerprint, relay.address, relay.or_port, relay.version, relay.exit_policy))
+    for relay in nickname_to_relay[nickname]:
+      relay_entries.append(RELAY_ENTRY % (relay.nickname, relay.fingerprint, relay.address, relay.or_port, relay.version, relay.exit_policy))
 
   try:
     body = EMAIL_BODY % len(new_relays)





More information about the tor-commits mailing list