[tor-commits] [compass/master] Use load() instead of accept()

karsten at torproject.org karsten at torproject.org
Fri Aug 24 17:12:34 UTC 2012


commit bb72ff540c105523202f1c254392f8d3832076b8
Author: Sathyanarayanan Gunasekaran <gsathya.ceg at gmail.com>
Date:   Mon Aug 20 22:09:51 2012 +0530

    Use load() instead of accept()
    
    The RelayStats.relays() method uses load()
    which internally calls accept()
---
 compass.py |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/compass.py b/compass.py
index 2d8ebc0..d25a3a4 100755
--- a/compass.py
+++ b/compass.py
@@ -21,7 +21,7 @@ class BaseFilter(object):
         pass
 
     def load(self, relays):
-        pass
+        return filter(self.accept, relays)
 
 class RunningFilter(BaseFilter):
     def accept(self, relay):
@@ -81,17 +81,18 @@ class SameNetworkFilter(BaseFilter):
         def __init__(self, relay):
             self.exit = relay.get('exit_probability')
             self.fp = relay.get('fingerprint')
+            self.relay = relay
     
     def __init__(self):
         self.network_data = {}
-        self.relays_fp = []        
+        self.relays = []        
     
     def load(self, all_relays):
         for relay in all_relays:
             or_addresses = relay.get("or_addresses")
             if len(or_addresses) > 1:
                 print "[WARNING] - %s has more than two OR Addresses - %s" % relay.get("fingerprint"), or_addresses
-            for ip in relay.get("or_addresses", []):
+            for ip in or_addresses:
                 ip, port = ip.rsplit(':', 1)
                 # skip if ipv6
                 if ':' in ip:
@@ -116,10 +117,10 @@ class SameNetworkFilter(BaseFilter):
                     self.network_data[network] = [relay_info]
 
         for relay_list in self.network_data.values():
-            for relay in relay_list:
-                self.relays_fp.append(relay.fp)
-
-    def accept(self, relay):        
+            self.relays.extend([relay.relay for relay in relay_list])
+        return self.relays
+    
+    def accept(self, relay):
         return relay.get('fingerprint') in self.relays_fp
     
 class GuardFilter(BaseFilter):
@@ -181,9 +182,8 @@ class RelayStats(object):
         self._relays = {}
         relays = self.data['relays']
         for f in self._filters:
-            f.load(relays)
-            relays = filter(f.accept, relays)
-
+            relays = f.load(relays)
+        
         for relay in relays:
             self.add_relay(relay)
         return self._relays





More information about the tor-commits mailing list