[tor-commits] [bridgedb/master] Refactor Filters.filterBridgesByTransport().

isis at torproject.org isis at torproject.org
Sat Mar 21 02:02:59 UTC 2015


commit adb67e64ab65bee8cca6ff0638ab97772c474bc9
Author: Isis Lovecruft <isis at torproject.org>
Date:   Wed Dec 24 08:59:53 2014 +0000

    Refactor Filters.filterBridgesByTransport().
---
 lib/bridgedb/Filters.py |   33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/lib/bridgedb/Filters.py b/lib/bridgedb/Filters.py
index 4580c87..b7bac87 100644
--- a/lib/bridgedb/Filters.py
+++ b/lib/bridgedb/Filters.py
@@ -74,23 +74,34 @@ def filterBridgesByIP6(bridge):
 setattr(filterBridgesByIP6, "description", "ip=6")
 
 def filterBridgesByTransport(methodname, addressClass=None):
-    if addressClass is None: addressClass = IPv4Address
-    assert (addressClass) in (IPv4Address, IPv6Address)
+    if not isinstance(addressClass, (IPv6Address, IPv4Address)):
+        addressClass = IPv4Address
+
     ruleset = frozenset([methodname, addressClass])
     try:
         return funcs[ruleset]
     except KeyError:
-        def f(bridge):
+
+        def _filterByTransport(bridge):
             for transport in bridge.transports:
-                # ignore method name case
-                if isinstance(transport.address, addressClass) and \
-                transport.methodname.lower() == methodname.lower(): return True
+                if isinstance(transport.address, addressClass):
+                    # ignore method name case
+                    if transport.methodname.lower() == methodname.lower():
+                        return True
+                    else:
+                        logging.debug(("Transport methodname '%s' doesn't match "
+                                       "requested methodname: '%s'.")
+                                      % (transport.methodname, methodname))
+                else:
+                    logging.debug(("Transport %s has incorrect address version "
+                                   "(%s).") % (transport, addressClass))
             return False
-        f.__name__ = "filterBridgesByTransport(%s,%s)" % (methodname,
-                addressClass)
-        setattr(f, "description", "transport=%s"%methodname)
-        funcs[ruleset] = f
-        return f
+
+        _filterByTransport.__name__ = ("filterBridgesByTransport(%s,%s)"
+                                       % (methodname, addressClass))
+        setattr(_filterByTransport, "description", "transport=%s" % methodname)
+        funcs[ruleset] = _filterByTransport
+        return _filterByTransport
 
 def filterBridgesByNotBlockedIn(countryCode, addressClass=None, methodname=None):
     """ if at least one address:port of the selected addressClass and





More information about the tor-commits mailing list