diff options
-rw-r--r-- | docs/changelog-next.rst | 2 | ||||
-rw-r--r-- | src/leap/bitmask/bonafide/_protocol.py | 2 | ||||
-rw-r--r-- | src/leap/bitmask/bonafide/config.py | 14 | ||||
-rw-r--r-- | src/leap/bitmask/bonafide/errors.py | 4 |
4 files changed, 18 insertions, 4 deletions
diff --git a/docs/changelog-next.rst b/docs/changelog-next.rst index 3e7a610..41414d8 100644 --- a/docs/changelog-next.rst +++ b/docs/changelog-next.rst @@ -24,6 +24,8 @@ Features Bugfixes ~~~~~~~~ +- `#8498 <https://leap.se/code/issues/8498>`_: In case of wrong url don't leave files in the config folder. + - `#1235 <https://leap.se/code/issues/1235>`_: Description for the fixed stuff corresponding with issue #1235. - Bugfix without related issue number. diff --git a/src/leap/bitmask/bonafide/_protocol.py b/src/leap/bitmask/bonafide/_protocol.py index 01919c7..3572cbf 100644 --- a/src/leap/bitmask/bonafide/_protocol.py +++ b/src/leap/bitmask/bonafide/_protocol.py @@ -168,7 +168,7 @@ class BonafideProtocol(object): def do_get_provider(self, provider_id, autoconf=False): provider = config.Provider(provider_id, autoconf=autoconf) - return provider.callWhenMainConfigReady(provider.config) + return provider.callWhenReady(provider.config) def do_provider_delete(self, provider_id): return config.delete_provider(provider_id) diff --git a/src/leap/bitmask/bonafide/config.py b/src/leap/bitmask/bonafide/config.py index 8ef6c1b..e4e2bf4 100644 --- a/src/leap/bitmask/bonafide/config.py +++ b/src/leap/bitmask/bonafide/config.py @@ -33,7 +33,7 @@ from twisted.web.client import Agent, downloadPage from leap.bitmask.bonafide._http import httpRequest from leap.bitmask.bonafide.provider import Discovery -from leap.bitmask.bonafide.errors import NotConfiguredError +from leap.bitmask.bonafide.errors import NotConfiguredError, NetworkError from leap.common.check import leap_assert from leap.common.config import get_path_prefix as common_get_path_prefix @@ -284,9 +284,13 @@ class Provider(object): uri = self._disco.get_provider_info_uri() met = self._disco.get_provider_info_method() + def errback(failure): + shutil.rmtree(folders) + raise NetworkError(failure.getErrorMessage()) + d = downloadPage(uri, provider_json, method=met) d.addCallback(lambda _: self._load_provider_json()) - d.addErrback(log.err) + d.addErrback(errback) return d def update_provider_info(self): @@ -299,6 +303,10 @@ class Provider(object): """ :rtype: deferred """ + + def errback(self, failure): + raise NetworkError(failure.getErrorMessage()) + path = self._get_ca_cert_path() if is_file(path): return defer.succeed('ca_cert_path_already_exists') @@ -306,7 +314,7 @@ class Provider(object): uri = self._get_ca_cert_uri() mkdir_p(os.path.split(path)[0]) d = downloadPage(uri, path) - d.addErrback(log.err) + d.addErrback(errback) return d def validate_ca_cert(self, ignored): diff --git a/src/leap/bitmask/bonafide/errors.py b/src/leap/bitmask/bonafide/errors.py index 485c43e..db92519 100644 --- a/src/leap/bitmask/bonafide/errors.py +++ b/src/leap/bitmask/bonafide/errors.py @@ -21,3 +21,7 @@ Exceptions for bonafide class NotConfiguredError(Exception): pass + + +class NetworkError(Exception): + pass |