summaryrefslogtreecommitdiff
path: root/src/mailman/rules/approved.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rules/approved.py')
-rw-r--r--src/mailman/rules/approved.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mailman/rules/approved.py b/src/mailman/rules/approved.py
index 5cb8de8e5..a289a90be 100644
--- a/src/mailman/rules/approved.py
+++ b/src/mailman/rules/approved.py
@@ -74,8 +74,14 @@ class Approved:
payload = part.get_payload(decode=True)
break
if payload is not None:
- charset = part.get_content_charset('us-ascii')
- payload = payload.decode(charset, 'replace')
+ try:
+ # Do the decoding inside the try/except so that if the
+ # charset conversion fails, we'll just drop back to ascii.
+ charset = part.get_content_charset('us-ascii')
+ payload = payload.decode(charset, 'replace')
+ except (LookupError, TypeError):
+ # Unknown or empty charset.
+ payload = payload.decode('us-ascii', 'replace')
line = ''
lines = payload.splitlines(True)
for lineno, line in enumerate(lines):