| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
yet ready to work from the trunk). Also, get rid of all the obsolete
.cvsignore directories, they're no longer needed.
Almost ready for 2.1.9rc1!
|
|
|
|
|
| |
Moritz Naumann and most of the repair work done by Mark Sapiro (with some
additional work by Barry).
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- In SecurityManager.py, fix the parsecookie() code to work with Python 2.5
generated cookie text. The latter was changed to be more RFC compliant so
it does not output trailing semicolons for each line of cookie text. This
broke the splitting rules, so now first split on newlines, then on ';\s*'.
This should work across all Python versions.
- In Python 2.5, exceptions are new-style, and thus are no longer of
ClassType. The instantiation type test in hold_for_approval() was too
naive. This one is fixed differently here than in the MM trunk because in
Python 2.1, 'type' isn't a type, it's a function and so can't be used as the
second argument to isinstance() directly.
- Raising strings generates deprecation warnings in Python 2.5. Switch the
one weird use of this in Utils.py to use a class exception. Don't call it
"quick exit" though because it's probably not.
|
|
|
| |
The caller may want to override the list setting.
|
|
|
|
| |
"while times.has_key(key):" for execution efficiency while maintaining
Python 2.1 compatibility.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Queue/Runner.py
- Queue/Switchboard.py
Backported the gfiles backup changes from the trunk. The following comments
are from the trunk checkin. Note that the test cases are not added.
Added robustness to Switchboards and Runners so that if a runner crashes
uncleanly (e.g. segfaults the Python interpreter), messages being processed
will not be lost.
The vulnerability, ideas, and patches are credited to Richard Barrett and Mark
Sapiro. Their original work was modified by Barry for this commit and any
bugs are his fault.
The basic idea is that instead of unlinking a .pck file in dequeue(), the file
is renamed to a .bak file. The Switchboard grows a finish() method which then
unlinks the .bak file. That class's constructor also grows a 'restore'
argument (defaulting to false), which when true moves all .bak files it finds
in its hash space to .pck, thereby restoring a file lost while "in flight".
This relies on the fact that even with multiple qrunners, exactly one process
will be responsible for one hash space slice, so it's never possible (under
normal operation) for a .bak file to be renamed to .pck by some other process.
Test cases for both the new Switchboard behavior and the use of that by Runner
subclasses has been added.
There are two things to watch out for, either of which may require some
additional changes. There is some small potential to duplicate messages in
various queues, if say 'mailmanctl' were improperly started more than once by
a site admin. This usually won't happen unless an admin is overly eager with
the mailmanctl -s switch, so we can chalk this one up to operator error. I'm
not sure what more we can do about that.
There's also a possibility that if we're processing a message that continually
causes the Python interpreter to crash, we could end up duplicating messages
endlessly. This is especially troublesome for the Outgoing runner which could
conceivably cause a mail flood. I consider this the more critical issue to
defend against, probably by adding a numbering scheme to the .bak file names
and refusing to restore a .bak file more than say 3 times without human
intervention.
|
|
|
|
|
| |
slices that could result in unprocessable queue entries. Improved FIFO
processing when two queue entries have the same timestamp.
|
|
|
|
|
|
|
|
| |
outside the character set of the list's language.
- Utils.py Fixed a security hole which allowed a crafted URI to inject
bogus apparent messages into the error log, possibly inducing an admin to
visit a phishing site.
|
|
|
|
|
|
| |
* Defaults.py.in: Added Vietnamese to add_languages.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
care all the .po files in language directories. More fixes should be done
in mailman-2.2.
|
| |
|
|
|
|
| |
local_part of the From: address as a 'real name' in the To: header when replying.
|
|
|
|
| |
get_domain() if VIRTUAL_HOST_OVERVIEW off.
|
|
|
|
| |
instead of DEFAULT_URL_HOST is VIRTUAL_HOST_OVERVIEW was off.
|
| |
|
| |
|
| |
|
|
|
|
| |
from Message.py
|
|
|
|
| |
Added some more test cases.
|
|
|
|
|
|
|
| |
so one all pattern sets are tried until a match is found so one start pattern whose
address doesn't match won't preempt a later patern set that will match.
Added more test cases.
|
|
|
|
|
|
| |
BounceRunner.py to discard the bounce when Stop returned. Changed
DSN.py to recognize Action: headers with comments. Changed Qmail.py
to recognize an observed different starting string.
|
|
|
|
| |
time.localtime(time.mktime()) to try again.
|
|
|
|
|
| |
translation rather that that of the list language. (The subscribers language may
be different.)
|
|
|
|
| |
is -1.
|
|
|
|
| |
when payload is None.
|
|
|
|
| |
comprehension where appropriate.
|
|
|
|
| |
to'.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
because it is overwrapped in Mailman.Message.
|
|
|
|
|
|
| |
This incorporates Python email patch:
http://sourceforge.net/tracker/?func=detail&aid=1409455&group_id=5470&atid=105470
and eventually be backed out if email package is updated.
|
| |
|
| |
|
| |
|
|
|
|
| |
new handler to be included in both GLOBAL_PIPELINE and OWNER_PIPELINE.
|
| |
|
| |
|