-/* $Cambridge: exim/src/src/retry.c,v 1.9 2006/03/09 15:10:16 ph10 Exp $ */
+/* $Cambridge: exim/src/src/retry.c,v 1.12 2007/01/08 10:50:18 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2006 */
+/* Copyright (c) University of Cambridge 1995 - 2007 */
/* See the file NOTICE for conditions of use and distribution. */
/* Functions concerned with retrying unsuccessful deliveries. */
last_rule->next != NULL;
last_rule = last_rule->next);
DEBUG(D_transport|D_retry)
- debug_printf("now=%d received_time=%d diff=%d timeout=%d\n",
- (int)now, received_time, (int)(now - received_time),
- last_rule->timeout);
+ debug_printf(" received_time=%d diff=%d timeout=%d\n",
+ received_time, (int)(now - received_time), last_rule->timeout);
address_timeout = (now - received_time > last_rule->timeout);
}
else
if (now < host_retry_record->next_try && !deliver_force)
{
DEBUG(D_transport|D_retry)
+ {
debug_printf("host retry time not reached: checking ultimate address "
"timeout\n");
+ debug_printf(" now=%d first_failed=%d next_try=%d expired=%d\n",
+ (int)now, (int)host_retry_record->first_failed,
+ (int)host_retry_record->next_try,
+ host_retry_record->expired);
+ }
if (!host_retry_record->expired &&
ultimate_address_timeout(host_key, domain,
if (now < message_retry_record->next_try && !deliver_force)
{
DEBUG(D_transport|D_retry)
+ {
debug_printf("host+message retry time not reached: checking ultimate "
"address timeout\n");
+ debug_printf(" now=%d first_failed=%d next_try=%d expired=%d\n",
+ (int)now, (int)message_retry_record->first_failed,
+ (int)message_retry_record->next_try, message_retry_record->expired);
+ }
if (!ultimate_address_timeout(host_key, domain, 0, 0, now))
{
host->status = hstatus_unusable;
DEBUG(D_retry) debug_printf("failing_interval=%d message_age=%d\n",
failing_interval, message_age);
- /* If the message has been on the queue longer than the recorded time
- of failure, use the message's age instead. This can happen when some
- messages can be delivered and others cannot; a successful delivery will
- reset the first_failed time, and this can lead to a failing message
- being retried too often. */
+ /* For a non-host error, if the message has been on the queue longer
+ than the recorded time of failure, use the message's age instead. This
+ can happen when some messages can be delivered and others cannot; a
+ successful delivery will reset the first_failed time, and this can lead
+ to a failing message being retried too often. */
- if (message_age > failing_interval) failing_interval = message_age;
+ if ((rti->flags & rf_host) == 0 && message_age > failing_interval)
+ failing_interval = message_age;
/* Search for the current retry rule. The cutoff time of the
last rule is handled differently to the others. The rule continues