[tor-commits] [chutney/master] TorNet: Fix display of dir info node lists

teor at torproject.org teor at torproject.org
Mon Mar 16 08:18:43 UTC 2020


commit 1eb79d4b837b72eeb8b280a3384a62eca77df8ce
Author: teor <teor at torproject.org>
Date:   Mon Mar 16 15:47:58 2020 +1000

    TorNet: Fix display of dir info node lists
    
    chutney was displaying any node set without directory authorities as
    "caches and clients".
    
    Now, chutney only displays "caches and clients" if the node set contains
    all caches and clients, and no dir auths.
    
    Bugfix on 33615.
---
 lib/chutney/TorNet.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/chutney/TorNet.py b/lib/chutney/TorNet.py
index cd50412..73e21f4 100644
--- a/lib/chutney/TorNet.py
+++ b/lib/chutney/TorNet.py
@@ -2151,6 +2151,7 @@ class Network(object):
                                most_recent_desc_status,
                                elapsed=None,
                                msg="Bootstrap in progress"):
+        nick_set = set()
         cons_auth_nick_set = set()
         elapsed_msg = ""
         if elapsed:
@@ -2162,6 +2163,7 @@ class Network(object):
         for c, boot_status in zip(controllers, most_recent_bootstrap_status):
             c.check(listRunning=False, listNonRunning=True)
             nick = c.getNick()
+            nick_set.add(nick)
             if c.getConsensusAuthority():
                 cons_auth_nick_set.add(nick)
             pct, kwd, bmsg = boot_status
@@ -2172,15 +2174,19 @@ class Network(object):
                                                   pct,
                                                   kwd,
                                                   bmsg))
+        cache_client_nick_set = nick_set.difference(cons_auth_nick_set)
         print("Published dir info:")
         for c in controllers:
             nick = c.getNick()
             if nick in most_recent_desc_status:
                 desc_status = most_recent_desc_status[nick]
                 code, nodes, docs, dmsg = desc_status
-                if len(nodes) == len(self._nodes):
+                node_set = set(nodes)
+                if node_set == nick_set:
                     nodes = "all nodes"
-                elif len(cons_auth_nick_set.intersection(nodes)) == 0:
+                elif node_set == cons_auth_nick_set:
+                    nodes = "dir auths"
+                elif node_set == cache_client_nick_set:
                     nodes = "caches and clients"
                 else:
                     nodes = [ node.replace("test", "")





More information about the tor-commits mailing list