[tor-commits] [nyx/master] Avoid double counting connections

atagar at torproject.org atagar at torproject.org
Fri Jan 11 18:45:29 UTC 2019


commit 7a4d21bcc12648f5ed2521b20e96c9925c290427
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Jan 11 10:39:52 2019 -0800

    Avoid double counting connections
    
    When a guard, bridge, or exit we scrub sensitive connection data but also
    aggregate it into graphs that present the client locales we're being used
    from or exit ports.
    
    In reviewing this for an old ticket [1] realized we're counting each
    connection made with us rather than unique clients or exit usage. As
    such, limiting our counts to one per a remote address.
    
    [1] https://trac.torproject.org/projects/tor/ticket/4281
---
 nyx/panel/connection.py  | 6 +++---
 web/changelog/index.html | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/nyx/panel/connection.py b/nyx/panel/connection.py
index f306278..167ad7b 100644
--- a/nyx/panel/connection.py
+++ b/nyx/panel/connection.py
@@ -104,7 +104,7 @@ class Entry(object):
     """
     Provides individual lines of connection information.
 
-    :returns: **list** of **ConnectionLine** concerning this entry
+    :returns: **list** of :class:`nyx.panel.connection.Line` concerning this entry
     """
 
     if self._lines is None:
@@ -534,13 +534,13 @@ class ConnectionPanel(nyx.panel.DaemonPanel):
       if self._halt:
         return
 
-      if entry.is_private() and line.connection not in self._counted_connections:
+      if entry.is_private() and line.connection.remote_address not in self._counted_connections:
         if entry.get_type() == Category.INBOUND and line.locale:
           self._client_locale_usage[line.locale] = self._client_locale_usage.get(line.locale, 0) + 1
         elif entry.get_type() == Category.EXIT:
           self._exit_port_usage[line.connection.remote_port] = self._exit_port_usage.get(line.connection.remote_port, 0) + 1
 
-        self._counted_connections.add(line.connection)
+        self._counted_connections.add(line.connection.remote_address)
 
     self._entries = sorted(new_entries, key = lambda entry: [entry.sort_value(attr) for attr in self._sort_order])
     self._last_resource_fetch = resolution_count
diff --git a/web/changelog/index.html b/web/changelog/index.html
index f5787e2..c0f823f 100644
--- a/web/changelog/index.html
+++ b/web/changelog/index.html
@@ -98,6 +98,7 @@
             <li>Geoip information unavailable for inbound connections</li>
             <li>Dialog showing exit statistics crashed when no data was available (<a href="https://trac.torproject.org/projects/tor/ticket/25801">ticket</a>)</li>
             <li>More strictly scrub sensitive connection information (<a href="https://trac.torproject.org/projects/tor/ticket/27475">ticket</a>)</li>
+            <li>Client and exit port usage dialogs counted each connection rather than unique clients and destinations (<a href="https://trac.torproject.org/projects/tor/ticket/4281">ticket</a>)</li>
           </ul>
         </li>
 



More information about the tor-commits mailing list