[tor-commits] [stem/master] Raise ValueErrors from FallbackDirectory.from_str
atagar at torproject.org
atagar at torproject.org
Fri Jan 12 18:16:53 UTC 2018
commit ef5b0ef03c7ab8e5d10ee2d4364e8af540bb6528
Author: Damian Johnson <atagar at torproject.org>
Date: Tue Jan 9 09:32:34 2018 -0800
Raise ValueErrors from FallbackDirectory.from_str
More appropriate for this to raise a ValueError, and have from_remote() recast
it as an IOError since only the later concerns content on the wire.
---
stem/descriptor/remote.py | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/stem/descriptor/remote.py b/stem/descriptor/remote.py
index e8d5e585..b318f4e3 100644
--- a/stem/descriptor/remote.py
+++ b/stem/descriptor/remote.py
@@ -1084,8 +1084,11 @@ class FallbackDirectory(Directory):
section = FallbackDirectory._pop_section(lines)
if section:
- fallback = FallbackDirectory.from_str('\n'.join(section))
- results[fallback.fingerprint] = fallback
+ try:
+ fallback = FallbackDirectory.from_str('\n'.join(section))
+ results[fallback.fingerprint] = fallback
+ except ValueError as exc:
+ raise IOError(str(exc))
return results
@@ -1107,7 +1110,7 @@ class FallbackDirectory(Directory):
:returns: :class:`~stem.descriptor.remote.FallbackDirectory` in the text
- :raises: **IOError** if content is malformed
+ :raises: **ValueError** if content is malformed
"""
matches = {}
@@ -1121,7 +1124,7 @@ class FallbackDirectory(Directory):
matches[matcher] = match_groups if len(match_groups) > 1 else match_groups[0]
if FALLBACK_ADDR not in matches:
- raise IOError('Malformed fallback address line:\n\n%s' % content)
+ raise ValueError('Malformed fallback address line:\n\n%s' % content)
address, dir_port, or_port, fingerprint = matches[FALLBACK_ADDR]
nickname = matches.get(FALLBACK_NICKNAME)
@@ -1129,19 +1132,19 @@ class FallbackDirectory(Directory):
orport_v6 = matches.get(FALLBACK_IPV6)
if not connection.is_valid_ipv4_address(address):
- raise IOError('%s has an invalid IPv4 address: %s' % (fingerprint, address))
+ raise ValueError('%s has an invalid IPv4 address: %s' % (fingerprint, address))
elif not connection.is_valid_port(or_port):
- raise IOError('%s has an invalid or_port: %s' % (fingerprint, or_port))
+ raise ValueError('%s has an invalid or_port: %s' % (fingerprint, or_port))
elif not connection.is_valid_port(dir_port):
- raise IOError('%s has an invalid dir_port: %s' % (fingerprint, dir_port))
+ raise ValueError('%s has an invalid dir_port: %s' % (fingerprint, dir_port))
elif not tor_tools.is_valid_fingerprint(fingerprint):
- raise IOError('%s has an invalid fingerprint: %s' % (fingerprint, fingerprint))
+ raise ValueError('%s has an invalid fingerprint: %s' % (fingerprint, fingerprint))
elif nickname and not tor_tools.is_valid_nickname(nickname):
- raise IOError('%s has an invalid nickname: %s' % (fingerprint, nickname))
+ raise ValueError('%s has an invalid nickname: %s' % (fingerprint, nickname))
elif orport_v6 and not connection.is_valid_ipv6_address(orport_v6[0]):
- raise IOError('%s has an invalid IPv6 address: %s' % (fingerprint, orport_v6[0]))
+ raise ValueError('%s has an invalid IPv6 address: %s' % (fingerprint, orport_v6[0]))
elif orport_v6 and not connection.is_valid_port(orport_v6[1]):
- raise IOError('%s has an invalid ORPort for its IPv6 endpoint: %s' % (fingerprint, orport_v6[1]))
+ raise ValueError('%s has an invalid ORPort for its IPv6 endpoint: %s' % (fingerprint, orport_v6[1]))
return FallbackDirectory(
address = address,
More information about the tor-commits
mailing list