| Commit message (Collapse) | Author | Files | Lines |
|
MMBadEmailError or MMHostileAddress will be caught.
|
|
|
|
|
|
|
|
before trying to call replace on them for the rejection notice substitution.
|
|
|
|
|
|
|
|
queuing of bounce events out of the process's memory and into a 'bounce event'
file, essentially consisting of a stream of pickles. Every once in a while
the qrunner wakes up and processes the event file, which is named to be
specific to each qrunner instance. The actually processing is factored out
into a mixin class which is now subclassed by both the BounceRunner and
OutgoingRunner classes (since the latter has to handle SMTP rejects as
bounces).
Specific changes here include:
OutgoingRunner: Use BounceMixin as a base class. We can now get rid of the
whole _permfailures and _permfail_counter stuff since we'll just use the mixin
class as the basic logic for bounce handling.
_dispose(): Simplified since we can just use _queue_bounces() when a message
is rejected at SMTP time, although if that triggers a probe, the attached
message will be the one for which delivery was attempted since there really
isn't any bounce. Also, make this method handle probe bounces.
|
|
queuing of bounce events out of the process's memory and into a 'bounce event'
file, essentially consisting of a stream of pickles. Every once in a while
the qrunner wakes up and processes the event file, which is named to be
specific to each qrunner instance. The actually processing is factored out
into a mixin class which is now subclassed by both the BounceRunner and
OutgoingRunner classes (since the latter has to handle SMTP rejects as
bounces).
Specific changes include:
REGISTER_BOUNCES_EVERY: Promote to a Defaults.py.in variable.
BounceMixin: Mixin class for handling the basics of bounce event queuing,
periodic processing, and registering, as well as cleanup. It also contains a
_probe_bounce() method for handling bounces of the probe message (which cause
an immediate disable).
BounceRunner: Add BounceMixin as a base class.
|
|
OutgoingRunner for easier handling of probe messages which are rejected at
SMTP time.
|
|
|
|
|
|
escaping. 'info' sanitizes just <script> and </script> tags. This partially
closes bugs 870028 and 881369.
|
|
This allows subclasses to override where necessary. The default implementaton
is to call Utils.websafe().
|
|
to the end of the function trying to present the options page for a
non-existant user, causing a traceback. At the last second, do one more
isMember() check and return the loginpage if the address isn't a member of the
list.
|
|
now a pickle instead the less secure marshal. Other changes:
__filename(): Removed. We'll use the instance variable __filename instead.
__opendb(): Simplified by removing upgrade logic largely duplicated in
_UpdateRecords().
__closedb(): Use pickles and the __filename instance variable.
__request_id(): Removed this since it wasn't thread-safe. It didn't require
the acquisition of the list lock. Replaced with __nextid() which not only
asserts the list lock, but also ensures that the id returned will be unique.
HoldMessage(): Always flush and fsync the heldmsg file.
Various other code improvement.
|
|
one-file-per-queued-message architecture. The message object and metadata
dictionary are now written to the same .pck file -- in that order -- instead
of to separate files which were more complicated to manage. dequeue()
especially simplifies considerably.
Also, get rid of the special _Switchboard hack, as well as the
MarshalSwitchboard, ASCIISwitchboard, and BSDDBSwitchboard implementations.
Also get rid of the DumperSwitchboard class.
|
|
|
|
|
|
addrchange_confirm(), heldmsg_cancel(), heldmsg_confirm(), reenable_confirm():
Convert to the new pending database interface.
expunge(): A helper function which ensures that the list is locked before
expunging an item from the confirmation database.
|
|
to indicate that we're now saving things in a per-list database.
|
|
class), pending database.
|
|
InviteNewMember(), AddMember(), ChangeMemberAddress(), ProcessConfirmation(),
ConfirmUnsubscription(): Convert to the new pending database interface.
|
|
member whose bounce score is greater than the threshold.
|
|
the probe verps, which are different than the normal message verps because the
former has a token hash in the address extension.
METAFMT_MARSHAL, METAFMT_BSDDB_NATIVE, METAFMT_ASCII, METADATA_FORMAT: Remove
all this since they don't make sense with the new rewritten single-file
qrunner architecture.
PENDINGDB_LOCK_TIMEOUT, PENDINGDB_LOCK_ATTEMPTS: These are no longer necessary
given the new per-list pending database.
|
|
registerBounce(): When the bounce score is higher than the threshold, instead
of disabling the address right way, we send a probe message, then we reset the
bounce score to zero.
disableBouncingMember(): Use the new pending db interface and update the log
messages.
sendNextNotification(): Use the new pending db interface.
|
|
SHIGENO Kazutaka.
|
|
|
|
munging Sender and Errors-To headers.
|
|
|
|
|
|
from AuthContextInfo() when old cookie data is for someone no longer a
member of the mailing list. Closes SF bug # 869647. Bug and patch by
Stephan Berndts.
|
|
|
|
|
|
it must be ascii. Coerce to an 8-bit string so the bogus u'' doesn't show
up. Closes SF 862906.
|
|
patch # 865661. Encode the subject header in the list's preferred
character set and make sure it is all on one line.
|
|
subject header in the list's preferred character set and make sure it
is all on one line, when sent back to the original author.
|
|
utility function that returns a header in an i18n-safe way such that
it is guaranteed to span exactly one line.
|
|
have one. Part of TK's patch #865661.
__processbody_URLquote(): One chunk of TK's patch # 865661 for
improving the i18n of the 'at' substitutions for archives.
|
|
self.authenticateMember() call in a try/except catching and ignoring
NotAMemberErrors. The effect of this is that other authcontexts being
check will then proceed as normal. This fixes admin login to the
private archives, and non-public rosters.
Under the old code, if you tried to get into the private archives w/o
entering an email address, but using the admin password, you'd be
denied access.
WebAuthenticate(): Removed the wrapping of .Authenticate() in
try/except catching of NotAMemberError, since this should never
percolate out now.
Also, use True/False everywhere it's appropriate (but not in the
cookie code).
Original bug and patch by Stephan Berndts. Closes SF bug # 864676 and
SF patch # 864674.
|
|
of the year).
|
|
and admin cgi process size by not keeping the entire mlist object
alive through a reference in the advertised list. Only the
information used in the overview is kept.
|
|
listinfo and admin cgi process size by not keeping the entire mlist
object alive through a reference in the advertised list. Only the
information used in the overview is kept.
|
|
archive bloat by deleting the html_body attribute on Article objects.
Closes SF bug #835332. This is a stub in the base class.
_update_thread_index(): Call finished_update_article() when done.
store_article(): squirrel away the html_body value when pickling the
article.
This only reduces bloat on new articles. See bin/rb-archfix to clean
up older archives.
|
|
archive bloat by deleting the html_body attribute on Article objects.
Closes SF bug #835332.
This only reduces bloat on new articles. See bin/rb-archfix to clean
up older archives.
|
|
|
|
|
|
process(): Reworked the way we calculate the List-Id header in the
face of i18n descriptions which may need to be quoted (if ASCII and
containing RFC 2822 special chars).
What we do now is RFC 2047 encode just the description part, if there
is one, then use formataddr() to combine that with the email
address-like list identification.
|
|
message is originally received and the time the digest is sent. If
the configuration changes by setting ARCHIVE_HTML_SANITIZER to 0, a
DiscardMessage exception can occur during the scrubbing. Catch this
error.
Closes SF #860135 with basic solution by Martin Pool.
|