Gitweb:
https://git.exim.org/exim.git/commitdiff/1f0be89381a057aaaaa4ecd4890d4597b7f6ce80
Commit: 1f0be89381a057aaaaa4ecd4890d4597b7f6ce80
Parent: a89b6bd32a650871031f4fce9b80ab6b7eb47d8e
Author: Jeremy Harris <jgh146exb@???>
AuthorDate: Sun Apr 19 21:18:21 2020 +0100
Committer: Jeremy Harris <jgh146exb@???>
CommitDate: Sun Apr 19 21:18:21 2020 +0100
Events: Fix msg:defer event for the hosts_max_try_hardlimit case. Bug 2554
---
doc/doc-txt/ChangeLog | 3 +++
src/src/transports/smtp.c | 7 ++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 9de2e11..edab6a8 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -164,6 +164,9 @@ JH/35 The dsearch lookup now requires that the directory is an absolute path.
Previously this was not checked, and nonempty relative paths made an
access under Exim's current working directory.
+JH/36 Bug 2554: Fix msg:defer event for the hosts_max_try_hardlimit case.
+ Previously no event was raised.
+
Exim version 4.93
-----------------
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index 5656e79..a3f0351 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -5163,7 +5163,12 @@ retry_non_continued:
#ifndef DISABLE_EVENT
/* If the last host gave a defer raise a per-message event */
- if (!nexthost && (message_defer || rc == DEFER))
+ if ( !( nexthost
+ && unexpired_hosts_tried < ob->hosts_max_try
+ && total_hosts_tried < ob->hosts_max_try_hardlimit
+ )
+ && (message_defer || rc == DEFER)
+ )
deferred_event_raise(first_addr, host, US"msg:defer");
#endif
}