[tor-commits] [stem/master] Defer address validity check to Address constructor
atagar at torproject.org
atagar at torproject.org
Wed Feb 7 19:44:51 UTC 2018
commit c1dc2ec4998d7816161beaa53ff19a2ca8a2564b
Author: Damian Johnson <atagar at torproject.org>
Date: Tue Feb 6 10:35:46 2018 -0800
Defer address validity check to Address constructor
There's no need to do upfront validation of our address since the Address
constructor already does this.
---
stem/client/__init__.py | 12 ++----------
stem/client/cell.py | 2 --
stem/client/datatype.py | 2 +-
test/unit/client/address.py | 2 +-
4 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/stem/client/__init__.py b/stem/client/__init__.py
index 3f8507e5..b743a0eb 100644
--- a/stem/client/__init__.py
+++ b/stem/client/__init__.py
@@ -34,7 +34,7 @@ import stem.client.cell
import stem.socket
import stem.util.connection
-from stem.client.datatype import ZERO, AddrType, Address, KDF, split
+from stem.client.datatype import ZERO, Address, KDF, split
__all__ = [
'cell',
@@ -71,13 +71,6 @@ class Relay(object):
* :class:`stem.SocketError` if we're unable to establish a connection
"""
- if stem.util.connection.is_valid_ipv4_address(address):
- addr_type = AddrType.IPv4
- elif stem.util.connection.is_valid_ipv6_address(address):
- addr_type = AddrType.IPv6
- else:
- raise ValueError("'%s' isn't an IPv4 or IPv6 address" % address)
-
if not stem.util.connection.is_valid_port(port):
raise ValueError("'%s' isn't a valid port" % port)
elif not link_protocols:
@@ -111,10 +104,9 @@ class Relay(object):
raise stem.SocketError('Unable to find a common link protocol. We support %s but %s:%i supports %s.' % (', '.join(link_protocols), address, port, ', '.join(versions_reply.versions)))
# TODO: we should fill in our address, right?
- # TODO: what happens if we skip the NETINFO?
link_protocol = max(common_protocols)
- conn.send(stem.client.cell.NetinfoCell(Address(address, addr_type), []).pack(link_protocol))
+ conn.send(stem.client.cell.NetinfoCell(Address(address), []).pack(link_protocol))
return Relay(conn, link_protocol)
diff --git a/stem/client/cell.py b/stem/client/cell.py
index 041e1c39..4ac8d40e 100644
--- a/stem/client/cell.py
+++ b/stem/client/cell.py
@@ -346,8 +346,6 @@ class RelayCell(CircuitCell):
@classmethod
def _unpack(cls, content, circ_id, link_protocol):
- orig_content = content
-
command, content = Size.CHAR.pop(content)
recognized, content = Size.SHORT.pop(content) # 'recognized' field
stream_id, content = Size.SHORT.pop(content)
diff --git a/stem/client/datatype.py b/stem/client/datatype.py
index 8b4c8e64..352a643e 100644
--- a/stem/client/datatype.py
+++ b/stem/client/datatype.py
@@ -347,7 +347,7 @@ class Address(Field):
elif stem.util.connection.is_valid_ipv6_address(value):
addr_type = AddrType.IPv6
else:
- raise ValueError('Address type is required unless an IPv4 or IPv6 address')
+ raise ValueError("'%s' isn't an IPv4 or IPv6 address" % value)
self.type, self.type_int = AddrType.get(addr_type)
diff --git a/test/unit/client/address.py b/test/unit/client/address.py
index f3da4971..09fcee95 100644
--- a/test/unit/client/address.py
+++ b/test/unit/client/address.py
@@ -44,7 +44,7 @@ class TestAddress(unittest.TestCase):
self.assertRaisesRegexp(ValueError, re.escape("Packed IPv4 addresses should be four bytes, but was: '\\x7f\\x00'"), Address, '\x7f\x00', 4)
self.assertRaisesRegexp(ValueError, re.escape("Packed IPv6 addresses should be sixteen bytes, but was: '\\x7f\\x00'"), Address, '\x7f\x00', 6)
- self.assertRaisesRegexp(ValueError, re.escape('Address type is required unless an IPv4 or IPv6 address'), Address, 'nope')
+ self.assertRaisesRegexp(ValueError, re.escape("'nope' isn't an IPv4 or IPv6 address"), Address, 'nope')
def test_unknown_type(self):
addr = Address('hello', 12)
More information about the tor-commits
mailing list