summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mailman/runners/bounce.py11
-rw-r--r--src/mailman/version.py2
2 files changed, 11 insertions, 2 deletions
diff --git a/src/mailman/runners/bounce.py b/src/mailman/runners/bounce.py
index 027db55a9..33bba73ce 100644
--- a/src/mailman/runners/bounce.py
+++ b/src/mailman/runners/bounce.py
@@ -70,9 +70,18 @@ class BounceRunner(Runner):
# done.s
addresses = scan_message(msg)
# If that still didn't return us any useful addresses, then send it on
- # or discard it.
+ # or discard it. The addresses will come back from flufl.bounce as
+ # bytes/8-bit strings, but we must store them as unicodes in the
+ # database. Assume utf-8 encoding, but be cautious.
if len(addresses) > 0:
for address in addresses:
+ if isinstance(address, bytes):
+ try:
+ address = address.decode('utf-8')
+ except UnicodeError:
+ log.exception('Ignoring non-UTF-8 encoded '
+ 'address: {0}'.format(address))
+ continue
self._processor.register(mlist, address, msg, context)
else:
log.info('Bounce message w/no discernable addresses: %s',
diff --git a/src/mailman/version.py b/src/mailman/version.py
index b1cf5100b..079f3dd8d 100644
--- a/src/mailman/version.py
+++ b/src/mailman/version.py
@@ -40,7 +40,7 @@ HEX_VERSION = ((MAJOR_REV << 24) | (MINOR_REV << 16) | (MICRO_REV << 8) |
(REL_LEVEL << 4) | (REL_SERIAL << 0))
-# SQLAlchemy database schema version
+# SQL database schema version
DATABASE_SCHEMA_VERSION = 1
# qfile/*.db schema version number