rfc6266: Improve error handling
This commit is contained in:
parent
213f5232c9
commit
bc64ea7fad
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue