[tor-commits] [stem/master] Fix exception type for ephemeral hidden service fallback
atagar at torproject.org
atagar at torproject.org
Tue May 7 16:06:49 UTC 2019
commit 80647b6a64551ba725da8433da90e263741a707a
Author: Damian Johnson <atagar at torproject.org>
Date: Tue May 7 09:02:37 2019 -0700
Fix exception type for ephemeral hidden service fallback
Modern tor versions provide an empty response when no ephemereal hidden service
is present...
>>> GETINFO onions/current
250-onions/current=
250 OK
>>> GETINFO onions/detached
250-onions/detached=
250 OK
But at least as of our tor-0.2.9.14 branch we raise an exception instead. We
attempted to catch these exceptions, but evidently caught the wrong type. Iirc
I changed our GETINFO exception raising behavior a while back so maybe this
slipped in then.
Caught thanks to 0xrichard...
https://trac.torproject.org/projects/tor/ticket/30422
======================================================================
ERROR: test_ephemeral_hidden_services_v2
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/atagar/Desktop/stem/test/require.py", line 57, in wrapped
return func(self, *args, **kwargs)
File "/home/atagar/Desktop/stem/test/require.py", line 57, in wrapped
return func(self, *args, **kwargs)
File "/home/atagar/Desktop/stem/test/integ/control/controller.py", line 559, in test_ephemeral_hidden_services_v2
self.assertEqual([], controller.list_ephemeral_hidden_services())
File "/home/atagar/Desktop/stem/stem/control.py", line 480, in wrapped
return func(self, *args, **kwargs)
File "/home/atagar/Desktop/stem/stem/control.py", line 2916, in list_ephemeral_hidden_services
result += self.get_info('onions/current').split('\n')
File "/home/atagar/Desktop/stem/stem/control.py", line 480, in wrapped
return func(self, *args, **kwargs)
File "/home/atagar/Desktop/stem/stem/control.py", line 1200, in get_info
stem.response.convert('GETINFO', response)
File "/home/atagar/Desktop/stem/stem/response/__init__.py", line 123, in convert
message._parse_message(**kwargs)
File "/home/atagar/Desktop/stem/stem/response/getinfo.py", line 46, in _parse_message
raise stem.OperationFailed(error_code, error_msg)
OperationFailed: No onion services of the specified type.
---
stem/control.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/stem/control.py b/stem/control.py
index 3ea3752f..9c689ae6 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -2914,7 +2914,7 @@ class Controller(BaseController):
if our_services:
try:
result += self.get_info('onions/current').split('\n')
- except stem.ProtocolError as exc:
+ except (stem.ProtocolError, stem.OperationFailed) as exc:
# TODO: Tor's behavior around this was changed in Feb 2017, we should
# drop it when all versions that did this are deprecated...
#
@@ -2926,7 +2926,7 @@ class Controller(BaseController):
if detached:
try:
result += self.get_info('onions/detached').split('\n')
- except stem.ProtocolError as exc:
+ except (stem.ProtocolError, stem.OperationFailed) as exc:
if 'No onion services of the specified type.' not in str(exc):
raise
More information about the tor-commits
mailing list