commit 94c46dda15faac31cb9524edbe312491432ab5cc Author: Damian Johnson atagar@torproject.org Date: Sat Sep 23 15:40:05 2017 -0700
Abort 'GETINFO ip-to-country' earlier if unavailable
Probably not really impactful, but little point in doing cache lookups when it's unavailable. --- stem/control.py | 8 ++++---- test/unit/control/controller.py | 1 + 2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/stem/control.py b/stem/control.py index a03835b9..796aa016 100644 --- a/stem/control.py +++ b/stem/control.py @@ -1141,6 +1141,10 @@ class Controller(BaseController): is_multiple = True params = set(params)
+ for param in params: + if param.startswith('ip-to-country/') and param != 'ip-to-country/0.0.0.0' and self.is_geoip_unavailable(): + raise stem.ProtocolError('Tor geoip database is unavailable') + # check for cached results
from_cache = [param.lower() for param in params] @@ -1151,10 +1155,6 @@ class Controller(BaseController): reply[user_expected_key] = cached_results[key] params.remove(user_expected_key)
- for param in params: - if param.startswith('ip-to-country/') and param != 'ip-to-country/0.0.0.0' and self.is_geoip_unavailable(): - raise stem.ProtocolError('Tor geoip database is unavailable') - # if everything was cached then short circuit making the query if not params: if LOG_CACHE_FETCHES: diff --git a/test/unit/control/controller.py b/test/unit/control/controller.py index ae5be387..8b5d6c8f 100644 --- a/test/unit/control/controller.py +++ b/test/unit/control/controller.py @@ -311,6 +311,7 @@ class TestControl(unittest.TestCase): )
for response in invalid_responses: + self.controller.clear_cache() get_info_mock.return_value = response self.assertRaises(stem.ProtocolError, self.controller.get_socks_listeners)
tor-commits@lists.torproject.org