From 747f571e6a6371517f00b67818628dfb8430df10 Mon Sep 17 00:00:00 2001 From: bwarsaw Date: Fri, 15 Nov 2002 21:26:11 +0000 Subject: main(): Watch out for unsubscription confirmations on addresses that have already been unsub'd, e.g. by the list administrator. Log an error message and throw the cookie away. --- Mailman/Cgi/confirm.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Mailman/Cgi/confirm.py b/Mailman/Cgi/confirm.py index 4809bf312..58e0642bb 100644 --- a/Mailman/Cgi/confirm.py +++ b/Mailman/Cgi/confirm.py @@ -111,12 +111,19 @@ def main(): else: subscription_prompt(mlist, doc, cookie, content[1]) elif content[0] == Pending.UNSUBSCRIPTION: - if cgidata.getvalue('cancel'): - unsubscription_cancel(mlist, doc, cookie) - elif cgidata.getvalue('submit'): - unsubscription_confirm(mlist, doc, cookie) - else: - unsubscription_prompt(mlist, doc, cookie, *content[1:]) + try: + if cgidata.getvalue('cancel'): + unsubscription_cancel(mlist, doc, cookie) + elif cgidata.getvalue('submit'): + unsubscription_confirm(mlist, doc, cookie) + else: + unsubscription_prompt(mlist, doc, cookie, *content[1:]) + except Errors.NotAMemberError: + doc.addError(_("""The address requesting unsubscription is not + a member of the mailing list. Perhaps you have already been + unsubscribed, e.g. by the list administrator?""")) + # And get rid of this confirmation cookie + Pending.confirm(cookie) elif content[0] == Pending.CHANGE_OF_ADDRESS: if cgidata.getvalue('cancel'): addrchange_cancel(mlist, doc, cookie) @@ -130,7 +137,7 @@ def main(): except Errors.NotAMemberError: doc.addError(_("""The address requesting to be changed has been subsequently unsubscribed. This request has been - cancelled""")) + cancelled.""")) Pending.confirm(cookie, expunge=1) elif content[0] == Pending.HELD_MESSAGE: if cgidata.getvalue('cancel'): -- cgit v1.2.3-70-g09d2