diff options
author | Heiko Schlittermann (HS12-RIPE) <hs@schlittermann.de> | 2017-11-05 23:57:16 +0100 |
---|---|---|
committer | Heiko Schlittermann (HS12-RIPE) <hs@schlittermann.de> | 2017-11-12 23:21:10 +0100 |
commit | ec62d0a959f5b329009c68a008fbd8594b93c511 (patch) | |
tree | 39e9a346657683f3c17ab2d1a1594b61e8f7d0d7 /src | |
parent | 205aba45c7693e77489a1fd5d4a73d1d3f2a5cf0 (diff) |
Add host detail on all deferred deliveries, not only the last one
Diffstat (limited to 'src')
-rw-r--r-- | src/src/transports/smtp.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 9dc632e7f..a501e6ed7 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -623,34 +623,34 @@ return FALSE; /* This writes to the main log and to the message log. Arguments: - addr the address item containing error information host the current host + detail the current message (addr_item->message) + basic_errno the errno (addr_item->basic_errno) Returns: nothing */ static void -write_logs(address_item *addr, host_item *host) +write_logs(const host_item *host, const uschar *suffix, int basic_errno) { -uschar * message = LOGGING(outgoing_port) + + +uschar *message = LOGGING(outgoing_port) ? string_sprintf("H=%s [%s]:%d", host->name, host->address, host->port == PORT_NONE ? 25 : host->port) : string_sprintf("H=%s [%s]", host->name, host->address); -if (addr->message) +if (suffix) { - message = string_sprintf("%s: %s", message, addr->message); - if (addr->basic_errno > 0) - message = string_sprintf("%s: %s", message, strerror(addr->basic_errno)); - log_write(0, LOG_MAIN, "%s", message); - deliver_msglog("%s %s\n", tod_stamp(tod_log), message); + message = string_sprintf("%s: %s", message, suffix); + if (basic_errno > 0) + message = string_sprintf("%s: %s", message, strerror(basic_errno)); } else - { - const uschar * s = exim_errstr(addr->basic_errno); - log_write(0, LOG_MAIN, "%s %s", message, s); - deliver_msglog("%s %s %s\n", tod_stamp(tod_log), message, s); - } + message = string_sprintf("%s %s", message, exim_errstr(basic_errno)); + +log_write(0, LOG_MAIN, "%s", message); +deliver_msglog("%s %s\n", tod_stamp(tod_log), message); } static void @@ -3319,8 +3319,9 @@ if (!sx.ok) set_rc = DEFER; if (save_errno > 0) message = US string_sprintf("%s: %s", message, strerror(save_errno)); - if (host->next != NULL) log_write(0, LOG_MAIN, "%s", message); - msglog_line(host, message); + + write_logs(host, message, sx.first_addr ? sx.first_addr->basic_errno : 0); + *message_defer = TRUE; } } @@ -4325,7 +4326,7 @@ for (cutoff_retry = 0; if (rc == DEFER && first_addr->basic_errno != ERRNO_AUTHFAIL && first_addr->basic_errno != ERRNO_TLSFAILURE) - write_logs(first_addr, host); + write_logs(host, first_addr->message, first_addr->basic_errno); #ifndef DISABLE_EVENT if (rc == DEFER) @@ -4355,7 +4356,7 @@ for (cutoff_retry = 0; rc = smtp_deliver(addrlist, thost, host_af, defport, interface, tblock, &message_defer, TRUE); if (rc == DEFER && first_addr->basic_errno != ERRNO_AUTHFAIL) - write_logs(first_addr, host); + write_logs(host, first_addr->message, first_addr->basic_errno); # ifndef DISABLE_EVENT if (rc == DEFER) deferred_event_raise(first_addr, host); |