diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/runners/bounce.py | 11 | ||||
| -rw-r--r-- | src/mailman/version.py | 2 |
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 |
