commit dd220882e6c73863cc574ec4ba3833ee478314cb Author: Damian Johnson atagar@torproject.org Date: Tue Mar 19 13:40:10 2013 -0700
Dropping support for port lists in descriptors
The 'or-address' and 'a' descriptors supported comma separated lists of ports. However, as per spec commit 99a9587 tor has never supported this, and the spec no longer includes this capability. --- stem/descriptor/router_status_entry.py | 12 ++++-------- stem/descriptor/server_descriptor.py | 12 ++++-------- test/unit/descriptor/router_status_entry.py | 6 +----- test/unit/descriptor/server_descriptor.py | 4 +--- 4 files changed, 10 insertions(+), 24 deletions(-)
diff --git a/stem/descriptor/router_status_entry.py b/stem/descriptor/router_status_entry.py index 69b8fa2..e2579eb 100644 --- a/stem/descriptor/router_status_entry.py +++ b/stem/descriptor/router_status_entry.py @@ -531,7 +531,7 @@ def _parse_a_line(desc, value, validate):
raise ValueError("%s 'a' line must be of the form '[address]:[ports]': a %s" % (desc._name(), value))
- address, ports = value.rsplit(':', 1) + address, port = value.rsplit(':', 1) is_ipv6 = address.startswith("[") and address.endswith("]")
if is_ipv6: @@ -544,14 +544,10 @@ def _parse_a_line(desc, value, validate): else: raise ValueError("%s 'a' line must start with an IPv6 address: a %s" % (desc._name(), value))
- for port in ports.split(','): - if not stem.util.connection.is_valid_port(port): - if not validate: - continue - else: - raise ValueError("%s 'a' line had an invalid port (%s): a %s" % (desc._name(), port, value)) - + if stem.util.connection.is_valid_port(port): desc.or_addresses.append((address, int(port), is_ipv6)) + elif validate: + raise ValueError("%s 'a' line had an invalid port (%s): a %s" % (desc._name(), port, value))
def _parse_s_line(desc, value, validate): diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py index bb7baa9..362437f 100644 --- a/stem/descriptor/server_descriptor.py +++ b/stem/descriptor/server_descriptor.py @@ -517,7 +517,7 @@ class ServerDescriptor(stem.descriptor.Descriptor): else: raise ValueError("or-address line missing a colon: %s" % line)
- address, ports = entry.rsplit(':', 1) + address, port = entry.rsplit(':', 1) is_ipv6 = address.startswith("[") and address.endswith("]")
if is_ipv6: @@ -530,14 +530,10 @@ class ServerDescriptor(stem.descriptor.Descriptor): else: raise ValueError("or-address line has a malformed address: %s" % line)
- for port in ports.split(","): - if not stem.util.connection.is_valid_port(port): - if not validate: - continue - else: - raise ValueError("or-address line has malformed ports: %s" % line) - + if stem.util.connection.is_valid_port(port): self.or_addresses.append((address, int(port), is_ipv6)) + elif validate: + raise ValueError("or-address line has a malformed port: %s" % line) elif keyword in ("read-history", "write-history"): try: timestamp, interval, remainder = \ diff --git a/test/unit/descriptor/router_status_entry.py b/test/unit/descriptor/router_status_entry.py index b61f5e8..a97153a 100644 --- a/test/unit/descriptor/router_status_entry.py +++ b/test/unit/descriptor/router_status_entry.py @@ -315,9 +315,6 @@ class TestRouterStatusEntry(unittest.TestCase): test_values = { "[2607:fcd0:daaa:101::602c:bd62]:443": [ ('2607:fcd0:daaa:101::602c:bd62', 443, True)], - "[2607:fcd0:daaa:101::602c:bd62]:80,443": [ - ('2607:fcd0:daaa:101::602c:bd62', 80, True), - ('2607:fcd0:daaa:101::602c:bd62', 443, True)] }
for a_line, expected in test_values.items(): @@ -327,11 +324,10 @@ class TestRouterStatusEntry(unittest.TestCase): # includes multiple 'a' lines
content = get_router_status_entry_v3(content = True) - content += "\na [2607:fcd0:daaa:101::602c:bd62]:80,443" + content += "\na [2607:fcd0:daaa:101::602c:bd62]:443" content += "\na [1148:fcd0:daaa:101::602c:bd62]:80"
expected = [ - ('2607:fcd0:daaa:101::602c:bd62', 80, True), ('2607:fcd0:daaa:101::602c:bd62', 443, True), ('1148:fcd0:daaa:101::602c:bd62', 80, True), ] diff --git a/test/unit/descriptor/server_descriptor.py b/test/unit/descriptor/server_descriptor.py index 3da01b5..ad62444 100644 --- a/test/unit/descriptor/server_descriptor.py +++ b/test/unit/descriptor/server_descriptor.py @@ -381,13 +381,11 @@ class TestServerDescriptor(unittest.TestCase): """
desc_text = "\n".join((get_bridge_server_descriptor(content = True), - "or-address 10.45.227.253:9001,9005,80", + "or-address 10.45.227.253:9001", "or-address [fd9f:2e19:3bcf::02:9970]:443"))
expected_or_addresses = [ ("10.45.227.253", 9001, False), - ("10.45.227.253", 9005, False), - ("10.45.227.253", 80, False), ("fd9f:2e19:3bcf::02:9970", 443, True), ]