[tor-commits] [bridgedb/master] Change isValidRouterNickname() to only return booleans.

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


commit 192a3e876015fd6bc1414af2df55945bb79471a2
Author: Isis Lovecruft <isis at torproject.org>
Date:   Thu Dec 11 04:28:04 2014 +0000

    Change isValidRouterNickname() to only return booleans.
---
 lib/bridgedb/parse/networkstatus.py |    2 ++
 lib/bridgedb/parse/nickname.py      |   25 +++++++++++++++++--------
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/lib/bridgedb/parse/networkstatus.py b/lib/bridgedb/parse/networkstatus.py
index 106edd9..8140fe0 100644
--- a/lib/bridgedb/parse/networkstatus.py
+++ b/lib/bridgedb/parse/networkstatus.py
@@ -39,6 +39,8 @@ from twisted.python.log import showwarning
 from bridgedb.parse import addr
 from bridgedb.parse import parseUnpaddedBase64
 from bridgedb.parse import InvalidBase64
+from bridgedb.parse.nickname import InvalidRouterNickname
+from bridgedb.parse.nickname import isValidRouterNickname
 
 
 class NetworkstatusParsingError(Exception):
diff --git a/lib/bridgedb/parse/nickname.py b/lib/bridgedb/parse/nickname.py
index b38bdb8..9c3a559 100644
--- a/lib/bridgedb/parse/nickname.py
+++ b/lib/bridgedb/parse/nickname.py
@@ -33,16 +33,25 @@ class InvalidRouterNickname(ValueError):
 def isValidRouterNickname(nickname):
     """Determine if a router's given nickname meets the specification.
 
-    :raises InvalidRouterNickname: if the nickname is invalid.
     :param string nickname: An OR's nickname.
+    :rtype: bool
+    :returns: ``True`` if the nickname is valid, ``False`` otherwise.
     """
     ALPHANUMERIC = string.letters + string.digits
 
-    if not (1 <= len(nickname) <= 19):
-        raise InvalidRouterNickname(
-            "Nicknames must be between 1 and 19 characters: %r" % nickname)
-    for letter in nickname:
-        if not letter in ALPHANUMERIC:
+    try:
+        if not (1 <= len(nickname) <= 19):
             raise InvalidRouterNickname(
-                "Nicknames must only use [A-Za-z0-9]: %r" % nickname)
-    return True
+                "Nicknames must be between 1 and 19 characters: %r" % nickname)
+        for letter in nickname:
+            if not letter in ALPHANUMERIC:
+                raise InvalidRouterNickname(
+                    "Nicknames must only use [A-Za-z0-9]: %r" % nickname)
+    except InvalidRouterNickname as error:
+        logging.error(str(error))
+    except TypeError:  # The nickname was probably still set to ``None``
+        pass
+    else:
+        return True
+
+    return False





More information about the tor-commits mailing list