summaryrefslogtreecommitdiff
path: root/Mailman/Handlers/HandlerAPI.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/Handlers/HandlerAPI.py')
-rw-r--r--Mailman/Handlers/HandlerAPI.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/Mailman/Handlers/HandlerAPI.py b/Mailman/Handlers/HandlerAPI.py
index 614a96cbb..43108574f 100644
--- a/Mailman/Handlers/HandlerAPI.py
+++ b/Mailman/Handlers/HandlerAPI.py
@@ -82,6 +82,12 @@ def DeliverToList(mlist, msg, msgdata):
# The delivery module being used (SMTPDirect or Sendmail) failed
# to deliver the message to one or all of the recipients. Push
# the delivery module back on the pipeline list and break.
+ #
+ # TBD: What this logic should really do is continue with the rest
+ # of the pipeline and put only the delivery module on the queued
+ # pipeline. I don't think this matters much right now because
+ # delivery success will generally be all-or-nothing until we
+ # support DSN.
pipeline.insert(0, modname)
# Consult and adjust some meager metrics that try to decide
# whether it's worth continuing to attempt delivery of this
@@ -91,14 +97,15 @@ def DeliverToList(mlist, msg, msgdata):
last_recip_count = msgdata.get('last_recip_count', 0)
deliver_until = msgdata.get('deliver_until', now)
if len(recips) == last_recip_count:
- # We didn't make any progress. How many times to we continue
- # to attempt delivery? TBD: make this configurable.
+ # We didn't make any progress.
if now > deliver_until:
- # throw this message away
- return 0
+ # We won't attempt delivery any longer so continue with
+ # the rest of the pipeline. See the TBD above.
+ del pipeline[0]
+ break
else:
# Keep trying to delivery this for 3 days
- deliver_until = now + 60*60*24*3
+ deliver_until = now + mm_cfg.DELIVERY_RETRY_PERIOD
msgdata['last_recip_count'] = len(recips)
msgdata['deliver_until'] = deliver_until
break