[Mailman-Developers] [Bug] 2x decode_header? [was: No subscriptionis made ...]
mark at msapiro.net
Mon Feb 25 17:35:52 CET 2008
Mark Sapiro wrote:
> Stephen J. Turnbull wrote:
>> Moving to -developers, reply-to set. Please keep Henrik in the loop.
>> Seems to be the same as
> I do not think it is the same bug. Note that bug 1186819 appears to be
> due to non-ascii in the user's real name and occurs during processing
> of a web subscribe request, although it may well also occur in
> processing an email subscribe request too since it comes in
> The current bug occurs in an email confirmation only and has to do with
> non-ascii in the message body.
> Here's my analysis of the current bug as posted in the mailman-users
> I looked more closely at the traceback, and I think we have a bug. What
> happened here is the confirmation was received and processed and the
> subscription was confirmed. Then there is a bit at the end of
> cmd_confirm.py that 'eats up' the rest of the message and makes a list
> of 'unprocessed' lines. It is in this loop that the exception occurs.
> The loop goes through the lines skipping any that match the 'confirm
> <token>' command just processed, since adding such a line to the
> 'unprocessed' lines would be confusing.
> In this case, the processed confirm command was in the subject, and
> because of the way we handle subjects, it was a Unicode string. Thus,
> when we looped through the rest of the lines doing
> if line.lstrip() == match:
> with match being a Unicode string, line.lstrip() was assumed ascii and
> coerced to Unicode for the comparison. This threw the exception when
> it got to the signature line with a non-ascii character, and even
> though the subscription was confirmed, the exception caused the saving
> of the updated list to be skipped and the new member was lost.
> I already have a fix for the current bug. I just haven't tested it yet.
> --- test-mailman-2.1/Mailman/Commands/cmd_confirm.py
> +++ test-mailman/Mailman/Commands/cmd_confirm.py
> @@ -90,8 +90,11 @@
> match = 'confirm ' + cookie
> unprocessed = 
> for line in res.commands:
> - if line.lstrip() == match:
> - continue
> + try:
> + if line.lstrip() == match:
> + continue
> + except UnicodeError:
> + pass
> res.commands = unprocessed
> # Process just one confirmation string per message
> I will also look into bug 1186819.
I am unable to reproduce either bug in Mailman 2.1.10b3 with Python
2.5.1, however I heard from Henrik that the above patch fixed his
problem, and I have committed that patch to the 2.1 branch.
I added a note to
saying I can't reproduce it and that it may have been fixed by
and asking for feedback if it is still a current problem.
Mark Sapiro <mark at msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
More information about the Mailman-Developers