commit 1f9ef690aadcfd121cbba9a59a65e3bcb6068339 Author: Damian Johnson atagar@torproject.org Date: Fri Sep 29 17:51:04 2017 -0700
Only determine relay ports once
No detectable difference when I lack any connections, but constructing this lists with every connection entry is silly (even if it is cached). Constructing a set once instead for constant time lookups. --- nyx/tracker.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/nyx/tracker.py b/nyx/tracker.py index 1fbd80e..9f1d72d 100644 --- a/nyx/tracker.py +++ b/nyx/tracker.py @@ -541,15 +541,15 @@ class ConnectionTracker(Daemon): controller = tor_controller() consensus_tracker = get_consensus_tracker()
+ relay_ports = set(controller.get_ports(stem.control.Listener.OR, [])) + relay_ports.update(controller.get_ports(stem.control.Listener.DIR, [])) + relay_ports.update(controller.get_ports(stem.control.Listener.CONTROL, [])) + for conn in proc.connections(user = controller.get_user(None)): if conn.remote_port in consensus_tracker.get_relay_fingerprints(conn.remote_address): connections.append(conn) # outbound to another relay - elif conn.local_port in controller.get_ports(stem.control.Listener.OR, []): - connections.append(conn) # inbound to our ORPort - elif conn.local_port in controller.get_ports(stem.control.Listener.DIR, []): - connections.append(conn) # inbound to our DirPort - elif conn.local_port in controller.get_ports(stem.control.Listener.CONTROL, []): - connections.append(conn) # controller connection + elif conn.local_port in relay_ports: + connections.append(conn) else: connections = connection.get_connections(resolver, process_pid = process_pid, process_name = process_name)