X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/b6054898ace169a0e5143117397a4f666a5e7283..9604a84387b55efdc633dd7fb20db14a65c1e343:/src/src/deliver.c diff --git a/src/src/deliver.c b/src/src/deliver.c index 9c4c1a746..238e33acc 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -792,6 +792,9 @@ g = string_append(g, 3, US" [", h->address, US"]"); if (LOGGING(outgoing_port)) g = string_fmt_append(g, ":%d", h->port); +if (continue_sequence > 1) /*XXX this is wrong for a dropped proxyconn. Would have to pass back from transport */ + g = string_catn(g, US"*", 1); + #ifdef SUPPORT_SOCKS if (LOGGING(proxy) && proxy_local_address) { @@ -1195,8 +1198,6 @@ else if (addr->host_used) { g = d_hostlog(g, addr); - if (continue_sequence > 1) /*XXX this is wrong for a dropped proxyconn. Would have to pass back from transport */ - g = string_catn(g, US"*", 1); #ifndef DISABLE_EVENT deliver_host_address = addr->host_used->address; @@ -1325,20 +1326,10 @@ else if (driver_kind) g = string_fmt_append(g, " defer (%d)", addr->basic_errno); if (addr->basic_errno > 0) - g = string_append(g, 2, US": ", - US strerror(addr->basic_errno)); + g = string_append(g, 2, US": ", US strerror(addr->basic_errno)); if (addr->host_used) - { - g = string_append(g, 5, - US" H=", addr->host_used->name, - US" [", addr->host_used->address, US"]"); - if (LOGGING(outgoing_port)) - { - int port = addr->host_used->port; - g = string_fmt_append(g, ":%d", port == PORT_NONE ? 25 : port); - } - } + g = d_hostlog(g, addr); if (LOGGING(deliver_time)) g = string_append(g, 2, US" DT=", string_timediff(&addr->delivery_time)); @@ -3194,6 +3185,7 @@ const uschar *listptr = remote_sort_domains; uschar *pattern; uschar patbuf[256]; +/*XXX The list is used before expansion. Not sure how that ties up with the docs */ while ( *aptr && (pattern = string_nextinlist(&listptr, &sep, patbuf, sizeof(patbuf))) ) @@ -7077,13 +7069,23 @@ if ( mua_wrapper /* If this is a run to continue deliveries to an external channel that is -already set up, defer any local deliveries. */ +already set up, defer any local deliveries. -if (continue_transport) +jgh 2020/12/20: I don't see why; locals should be quick. +The defer goes back to version 1.62 in 1997. A local being still deliverable +during a continued run might result from something like a defer during the +original delivery, eg. in a DB lookup. Unlikely but possible. + +To avoid delaying a local when combined with a callout-hold for a remote +delivery, test continue_sequence rather than continue_transport. */ + +if (continue_sequence > 1 && addr_local) { + DEBUG(D_deliver|D_retry|D_route) + debug_printf("deferring local deliveries due to continued-transport\n"); if (addr_defer) { - address_item *addr = addr_defer; + address_item * addr = addr_defer; while (addr->next) addr = addr->next; addr->next = addr_local; }