From e7f792a65f50f10ae47dce5064554df762159a85 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sun, 19 Jul 2009 14:15:22 +0100 Subject: [PATCH] Record errors looking up keys --- zeroinstall/injector/fetch.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/zeroinstall/injector/fetch.py b/zeroinstall/injector/fetch.py index 88f3434..5d59c65 100644 --- a/zeroinstall/injector/fetch.py +++ b/zeroinstall/injector/fetch.py @@ -16,6 +16,8 @@ from zeroinstall.injector.iface_cache import PendingFeed, ReplayAttack from zeroinstall.injector.handler import NoTrustedKeys from zeroinstall.injector import download +DEFAULT_KEY_LOOKUP_SERVER = 'https://keylookup.appspot.com' + def _escape_slashes(path): return path.replace('/', '%23') @@ -54,23 +56,28 @@ class KeyInfoFetcher: dl = download.Download(server + '/key/' + fingerprint) dl.start() + from xml.dom import minidom + @tasks.async def fetch_key_info(): - tempfile = dl.tempfile - yield dl.downloaded - self.blocker = None - tasks.check(dl.downloaded) - tempfile.seek(0) - from xml.dom import minidom - doc = minidom.parse(tempfile) - if doc.documentElement.localName != 'key-lookup': - raise SafeException('Expected , not <%s>' % doc.documentElement.localName) - self.info += doc.documentElement.childNodes + try: + tempfile = dl.tempfile + yield dl.downloaded + self.blocker = None + tasks.check(dl.downloaded) + tempfile.seek(0) + doc = minidom.parse(tempfile) + if doc.documentElement.localName != 'key-lookup': + raise SafeException('Expected , not <%s>' % doc.documentElement.localName) + self.info += doc.documentElement.childNodes + except Exception, ex: + doc = minidom.parseString('') + root = doc.documentElement + root.appendChild(doc.createTextNode('Error getting key information: %s' % ex)) + self.info.append(root) self.blocker = fetch_key_info() -DEFAULT_KEY_LOOKUP_SERVER = 'https://keylookup.appspot.com' - class Fetcher(object): """Downloads and stores various things. @ivar handler: handler to use for user-interaction -- 2.11.4.GIT