diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-17 12:41:08 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-17 12:41:08 +0100 |
commit | bc64ea7fad9be0e75e13ece0ec20e07f04736fb3 (patch) | |
tree | dccf06c490da6d47ec6ee3df19e291779ddda625 | |
parent | 213f5232c9b49e4c4c1fd53e36d7719dc04baac0 (diff) | |
download | qutebrowser-bc64ea7fad9be0e75e13ece0ec20e07f04736fb3.tar.gz qutebrowser-bc64ea7fad9be0e75e13ece0ec20e07f04736fb3.zip |
rfc6266: Improve error handling
-rw-r--r-- | qutebrowser/browser/webkit/http.py | 7 | ||||
-rw-r--r-- | 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) |