aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Sapiro <mark@msapiro.net>2015-12-06 12:00:29 -0800
committerMark Sapiro <mark@msapiro.net>2015-12-06 12:00:29 -0800
commit4e967acf9b45a6a6d24bc3d84c6d40f6dcffc1e8 (patch)
tree5965453323ff012e09e39e0edccce0b2b14cf73d
parentcd1fa627777ef91aeae0a10099c3f80b8dd53eae (diff)
downloadmailman2-4e967acf9b45a6a6d24bc3d84c6d40f6dcffc1e8.tar.gz
mailman2-4e967acf9b45a6a6d24bc3d84c6d40f6dcffc1e8.tar.xz
mailman2-4e967acf9b45a6a6d24bc3d84c6d40f6dcffc1e8.zip
Submitting the user options form for a user who was asynchronously
unsubscribed would throw an uncaught NotAMemberError.
-rw-r--r--Mailman/Cgi/options.py8
-rwxr-xr-xNEWS3
2 files changed, 11 insertions, 0 deletions
diff --git a/Mailman/Cgi/options.py b/Mailman/Cgi/options.py
index 7b2c70b5..cdc2bef3 100644
--- a/Mailman/Cgi/options.py
+++ b/Mailman/Cgi/options.py
@@ -297,6 +297,14 @@ def main():
# options. The first set of checks does not require the list to be
# locked.
+ # However, if a form is submitted for a user who has been asynchronously
+ # unsubscribed, uncaught NotAMemberError exceptions can be thrown.
+
+ if not mlist.isMember(user):
+ loginpage(mlist, doc, user, language)
+ print doc.Format()
+ return
+
if cgidata.has_key('logout'):
print mlist.ZapCookie(mm_cfg.AuthUser, user)
loginpage(mlist, doc, user, language)
diff --git a/NEWS b/NEWS
index 13461158..94014633 100755
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,9 @@ Here is a history of user visible changes to Mailman.
Bug fixes and other patches
+ - Submitting the user options form for a user who was asynchronously
+ unsubscribed would throw an uncaught NotAMemberError. (LP: #1523273)
+
- It was possible under some circumstances for a message to be shunted
after a handler rejected or discarded it, and the handler would be
skipped upon unshunting and the message accepted. (LP: #1519062)