diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-01-16 23:04:13 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-01-17 12:12:26 +0100 |
commit | 1adaf916cd9a9b4e189655e7bee8f69c220d0a7b (patch) | |
tree | 5e7f62008ecc5b740e962c2e031361bb0bdb325a | |
parent | f6ca050c94f250456eea421a914b8d3b831439be (diff) | |
download | qutebrowser-1adaf916cd9a9b4e189655e7bee8f69c220d0a7b.tar.gz qutebrowser-1adaf916cd9a9b4e189655e7bee8f69c220d0a7b.zip |
rfc6266: First cleanups after stdlib switch
See #1161
-rw-r--r-- | qutebrowser/browser/webkit/http.py | 2 | ||||
-rw-r--r-- | qutebrowser/browser/webkit/rfc6266.py | 19 |
2 files changed, 8 insertions, 13 deletions
diff --git a/qutebrowser/browser/webkit/http.py b/qutebrowser/browser/webkit/http.py index c04b37a85..9c44cea4c 100644 --- a/qutebrowser/browser/webkit/http.py +++ b/qutebrowser/browser/webkit/http.py @@ -51,7 +51,7 @@ def parse_content_disposition(reply): value)) content_disposition = rfc6266.parse_headers(value) filename = content_disposition.filename() - except (SyntaxError, UnicodeDecodeError, rfc6266.Error): + except (UnicodeDecodeError, rfc6266.Error): log.rfc6266.exception("Error while parsing filename") else: is_inline = content_disposition.is_inline() diff --git a/qutebrowser/browser/webkit/rfc6266.py b/qutebrowser/browser/webkit/rfc6266.py index 41f0dcddd..30ad31228 100644 --- a/qutebrowser/browser/webkit/rfc6266.py +++ b/qutebrowser/browser/webkit/rfc6266.py @@ -68,10 +68,7 @@ class _ContentDisposition: """Used internally after parsing the header.""" self.disposition = disposition self.assocs = dict(assocs) # So we can change values - if 'filename*' in self.assocs: - param = self.assocs['filename*'] - assert isinstance(param, ExtDispositionParm) - self.assocs['filename*'] = parse_ext_value(param.value).string + assert 'filename*' not in self.assocs # Handled by headerregistry def filename(self): """The filename from the Content-Disposition header or None. @@ -85,12 +82,8 @@ class _ContentDisposition: well, due to a certain browser using the part after the dot for mime-sniffing. Saving it to a database is fine by itself though. """ - if 'filename*' in self.assocs: - return self.assocs['filename*'] - elif 'filename' in self.assocs: - # XXX Reject non-ascii (parsed via qdtext) here? - return self.assocs['filename'] - return None + # XXX Reject non-ascii (parsed via qdtext) here? + return self.assocs.get('filename') def is_inline(self): """Return if the file should be handled inline. @@ -115,6 +108,7 @@ def parse_headers(content_disposition): # 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') + # Our parsing is relaxed in these regards: # - The grammar allows a final ';' in the header; # - We do LWS-folding, and possibly normalise other broken @@ -130,8 +124,9 @@ def parse_headers(content_disposition): if parsed.defects: raise Error(parsed.defects) - return _ContentDisposition(disposition=parsed._content_disposition, - assocs=parsed._params) + + return _ContentDisposition(disposition=parsed.content_disposition, + assocs=parsed.params) def parse_ext_value(val): |