summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-01-17 12:41:08 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-01-17 12:41:08 +0100
commitbc64ea7fad9be0e75e13ece0ec20e07f04736fb3 (patch)
treedccf06c490da6d47ec6ee3df19e291779ddda625
parent213f5232c9b49e4c4c1fd53e36d7719dc04baac0 (diff)
downloadqutebrowser-bc64ea7fad9be0e75e13ece0ec20e07f04736fb3.tar.gz
qutebrowser-bc64ea7fad9be0e75e13ece0ec20e07f04736fb3.zip
rfc6266: Improve error handling
-rw-r--r--qutebrowser/browser/webkit/http.py7
-rw-r--r--qutebrowser/browser/webkit/rfc6266.py7
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)