From bc64ea7fad9be0e75e13ece0ec20e07f04736fb3 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sun, 17 Jan 2021 12:41:08 +0100 Subject: rfc6266: Improve error handling --- qutebrowser/browser/webkit/http.py | 7 +++---- qutebrowser/browser/webkit/rfc6266.py | 7 +++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/qutebrowser/browser/webkit/http.py b/qutebrowser/browser/webkit/http.py index 9c44cea4c..2bace9f3c 100644 --- a/qutebrowser/browser/webkit/http.py +++ b/qutebrowser/browser/webkit/http.py @@ -47,12 +47,11 @@ def parse_content_disposition(reply): # os.path.basename later. try: value = bytes(reply.rawHeader(content_disposition_header)) - log.rfc6266.debug("Parsing Content-Disposition: {!r}".format( - value)) + log.rfc6266.debug("Parsing Content-Disposition: {value!r}") content_disposition = rfc6266.parse_headers(value) filename = content_disposition.filename() - except (UnicodeDecodeError, rfc6266.Error): - log.rfc6266.exception("Error while parsing filename") + except rfc6266.Error as e: + log.rfc6266.error(f"Error while parsing filename: {e}") else: is_inline = content_disposition.is_inline() # Then try to get filename from url diff --git a/qutebrowser/browser/webkit/rfc6266.py b/qutebrowser/browser/webkit/rfc6266.py index ad1f63ad3..fb9542969 100644 --- a/qutebrowser/browser/webkit/rfc6266.py +++ b/qutebrowser/browser/webkit/rfc6266.py @@ -80,13 +80,16 @@ def parse_headers(content_disposition): # value won't get dismissed because of an unrelated ambiguity in the # filename parameter. But it does mean we occasionally give # less-than-certain values for some legacy senders. - content_disposition = content_disposition.decode('iso-8859-1') + try: + content_disposition = content_disposition.decode('iso-8859-1') + except UnicodeDecodeError as e: + raise Error(e) reg = email.headerregistry.HeaderRegistry() parsed = reg('Content-Disposition', content_disposition) if parsed.defects: - raise Error(parsed.defects) + raise Error(list(parsed.defects)) return _ContentDisposition(disposition=parsed.content_disposition, params=parsed.params) -- cgit v1.2.3-54-g00ecf