static void
write_logs(const host_item *host, const uschar *suffix, int basic_errno)
{
-uschar *message = LOGGING(outgoing_port)
- ? string_sprintf("H=%s [%s]:%d", host->name, host->address,
+gstring * message = LOGGING(outgoing_port)
+ ? string_fmt_append(NULL, "H=%s [%s]:%d", host->name, host->address,
host->port == PORT_NONE ? 25 : host->port)
- : string_sprintf("H=%s [%s]", host->name, host->address);
+ : string_fmt_append(NULL, "H=%s [%s]", host->name, host->address);
if (suffix)
{
- message = string_sprintf("%s: %s", message, suffix);
+ message = string_fmt_append(message, ": %s", suffix);
if (basic_errno > 0)
- message = string_sprintf("%s: %s", message, strerror(basic_errno));
+ message = string_fmt_append(message, ": %s", strerror(basic_errno));
}
else
- message = string_sprintf("%s %s", message, exim_errstr(basic_errno));
+ message = string_fmt_append(message, " %s", exim_errstr(basic_errno));
-log_write(0, LOG_MAIN, "%s", message);
-deliver_msglog("%s %s\n", tod_stamp(tod_log), message);
+log_write(0, LOG_MAIN, "%s", string_from_gstring(message));
+deliver_msglog("%s %s\n", tod_stamp(tod_log), message->s);
}
static void
If not, log this last one in the == line. */
if (sx->conn_args.host->next)
- log_write(0, LOG_MAIN, "H=%s [%s]: %s",
- sx->conn_args.host->name, sx->conn_args.host->address, addr->message);
+ if (LOGGING(outgoing_port))
+ log_write(0, LOG_MAIN, "H=%s [%s]:%d %s", sx->conn_args.host->name,
+ sx->conn_args.host->address,
+ sx->port == PORT_NONE ? 25 : sx->port, addr->message);
+ else
+ log_write(0, LOG_MAIN, "H=%s [%s]: %s", sx->conn_args.host->name,
+ sx->conn_args.host->address, addr->message);
#ifndef DISABLE_EVENT
else
sx.helo_data = NULL;
sx.conn_args.tblock = tblock;
sx.verify = FALSE;
-#ifdef EXPERIMENTAL_PIPE_CONNECT
sx.sync_addr = sx.first_addr = addrlist;
-#endif
/* Get the channel set up ready for a message (MAIL FROM being the next
SMTP command to send */
message_id, host->name, host->address, addrlist->address,
addrlist->next ? ", ..." : "");
- set_process_info("delivering %s to %s [%s] (%s%s)",
- message_id, host->name, host->address, addrlist->address,
+ set_process_info("delivering %s to %s [%s]%s (%s%s)",
+ message_id, host->name, host->address, pistring, addrlist->address,
addrlist->next ? ", ..." : "");
/* This is not for real; don't do the delivery. If there are
: rc == ERROR ? US"ERROR"
: US"?";
- set_process_info("delivering %s: just tried %s [%s] for %s%s: result %s",
- message_id, host->name, host->address, addrlist->address,
+ set_process_info("delivering %s: just tried %s [%s]%s for %s%s: result %s",
+ message_id, host->name, host->address, pistring, addrlist->address,
addrlist->next ? " (& others)" : "", rs);
/* Release serialization if set up */
"hosts_max_try (message older than host's retry time)\n");
}
}
+
+ DEBUG(D_transport)
+ {
+ if (unexpired_hosts_tried >= ob->hosts_max_try)
+ debug_printf("reached transport hosts_max_try limit %d\n",
+ ob->hosts_max_try);
+ if (total_hosts_tried >= ob->hosts_max_try_hardlimit)
+ debug_printf("reached transport hosts_max_try_hardlimit limit %d\n",
+ ob->hosts_max_try_hardlimit);
+ }
+
if (f.running_in_test_harness) millisleep(500); /* let server debug out */
} /* End of loop for trying multiple hosts. */