commit bd2df36146bfc2bb38fac4d7888ca84f7eb70e8c Author: Damian Johnson atagar@torproject.org Date: Sun Feb 25 17:03:59 2018 -0800
Accept bytes in is_valid_ipv4_address
With python3 byte arguments failed with...
====================================================================== ERROR: test_is_valid_ipv4_address ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/atagar/Desktop/stem/test/unit/util/connection.py", line 464, in test_is_valid_ipv4_address self.assertTrue(stem.util.connection.is_valid_ipv4_address(address)) File "/home/atagar/Desktop/stem/stem/util/connection.py", line 415, in is_valid_ipv4_address if address.count('.') != 3: TypeError: a bytes-like object is required, not 'str' --- stem/util/connection.py | 9 +++++++-- test/unit/util/connection.py | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/stem/util/connection.py b/stem/util/connection.py index d989713a..3395a3a5 100644 --- a/stem/util/connection.py +++ b/stem/util/connection.py @@ -64,7 +64,7 @@ import re import stem.util.proc import stem.util.system
-from stem.util import str_type, conf, enum, log +from stem.util import str_type, conf, enum, log, str_tools
# Connection resolution is risky to log about since it's highly likely to # contain sensitive information. That said, it's also difficult to get right in @@ -407,7 +407,9 @@ def is_valid_ipv4_address(address): :returns: **True** if input is a valid IPv4 address, **False** otherwise """
- if not isinstance(address, (bytes, str_type)): + if isinstance(address, bytes): + address = str_tools._to_unicode(address) + elif not isinstance(address, str_type): return False
# checks if theres four period separated values @@ -435,6 +437,9 @@ def is_valid_ipv6_address(address, allow_brackets = False): :returns: **True** if input is a valid IPv6 address, **False** otherwise """
+ if isinstance(address, bytes): + address = str_tools._to_unicode(address) + if allow_brackets: if address.startswith('[') and address.endswith(']'): address = address[1:-1] diff --git a/test/unit/util/connection.py b/test/unit/util/connection.py index 58a5cb82..a2162029 100644 --- a/test/unit/util/connection.py +++ b/test/unit/util/connection.py @@ -444,8 +444,10 @@ class TestConnection(unittest.TestCase): valid_addresses = ( '0.0.0.0', '1.2.3.4', + '1.2.3.4', '192.168.0.1', '255.255.255.255', + b'255.255.255.255', )
invalid_addresses = ( @@ -455,6 +457,7 @@ class TestConnection(unittest.TestCase): '1.2.3.-1', '0.0.0.a', 'a.b.c.d', + b'a.b.c.d', )
for address in valid_addresses: