Update of /cvsroot/mailman/mailman/Mailman/Cgi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3402

Modified Files:
      Tag: Release_2_1-maint
        options.py 
Log Message:
main(): The list lock must be held in order to pend unsubscription requests.


Index: options.py
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/Cgi/options.py,v
retrieving revision 2.40.2.4
retrieving revision 2.40.2.5
diff -u -d -r2.40.2.4 -r2.40.2.5
--- options.py  17 Feb 2004 19:18:06 -0000      2.40.2.4
+++ options.py  29 Feb 2004 16:45:27 -0000      2.40.2.5
@@ -163,22 +163,23 @@
         # Because they can't supply a password for unsubscribing, we'll need
         # to do the confirmation dance.
         if mlist.isMember(user):
-            # If unsubs require admin approval, then this request has to be
-            # held.  Otherwise, send a confirmation.
-            if mlist.unsubscribe_policy:
-                try:
-                    mlist.Lock()
+            # We must acquire the list lock in order to pend a request.
+            try:
+                mlist.Lock()
+                # If unsubs require admin approval, then this request has to
+                # be held.  Otherwise, send a confirmation.
+                if mlist.unsubscribe_policy:
                     mlist.HoldUnsubscription(user)
                     doc.addError(_("""Your unsubscription request has been
                     forwarded to the list administrator for approval."""),
                                  tag='')
-                    mlist.Save()
-                finally:
-                    mlist.Unlock()
-            else:
-                mlist.ConfirmUnsubscription(user, userlang)
-                doc.addError(_('The confirmation email has been sent.'),
-                             tag='')
+                else:
+                    mlist.ConfirmUnsubscription(user, userlang)
+                    doc.addError(_('The confirmation email has been sent.'),
+                                 tag='')
+                mlist.Save()
+            finally:
+                mlist.Unlock()
         else:
             # Not a member
             if mlist.private_roster == 0:


_______________________________________________
Mailman-checkins mailing list
[EMAIL PROTECTED]
Unsubscribe: http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to