[tor-commits] [stem/master] Dropping support for port lists in descriptors

atagar at torproject.org atagar at torproject.org
Wed Mar 20 16:51:28 UTC 2013


commit dd220882e6c73863cc574ec4ba3833ee478314cb
Author: Damian Johnson <atagar at 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),
     ]
 





More information about the tor-commits mailing list