aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Sapiro <mark@msapiro.net>2008-09-21 11:59:44 -0700
committerMark Sapiro <mark@msapiro.net>2008-09-21 11:59:44 -0700
commit442dfb107a5dd011dcee55d3bb4f3b1ec58ac91a (patch)
tree09b2d055afbd48831325a9b254fcfc78ee5e282e
parent8a5abde2e58368b605605e370bc3870eb51ca0e6 (diff)
downloadmailman2-442dfb107a5dd011dcee55d3bb4f3b1ec58ac91a.tar.gz
mailman2-442dfb107a5dd011dcee55d3bb4f3b1ec58ac91a.tar.xz
mailman2-442dfb107a5dd011dcee55d3bb4f3b1ec58ac91a.zip
The immediately preceding fix for bug #266106 (sf998384) was incomplete.
It fixed the underlying issue, but didn't fix an improperly converted request.pck file. This change adds code to detect and recover from an incorect conversion.
-rw-r--r--Mailman/ListAdmin.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/Mailman/ListAdmin.py b/Mailman/ListAdmin.py
index f862073b..ec1307ac 100644
--- a/Mailman/ListAdmin.py
+++ b/Mailman/ListAdmin.py
@@ -538,7 +538,21 @@ class ListAdmin:
except IOError, e:
if e.errno <> errno.ENOENT: raise
self.__db = {}
- for id, (op, info) in self.__db.items():
+ for id, x in self.__db.items():
+ # A bug in versions 2.1.1 through 2.1.11 could have resulted in
+ # just info being stored instead of (op, info)
+ if len(x) == 2:
+ op, info = x
+ elif len(x) == 6:
+ # This is the buggy info. Check for digest flag.
+ if x[4] in (0, 1):
+ op = SUBSCRIPTION
+ else:
+ op = HELDMSG
+ self.__db[id] = op, x
+ continue
+ else:
+ assert False, 'Unknown record format in %s' % self.__filename
if op == SUBSCRIPTION:
if len(info) == 4:
# pre-2.1a2 compatibility