-/* $Cambridge: exim/src/src/transports/lmtp.c,v 1.8 2006/03/09 15:10:16 ph10 Exp $ */
-
/*************************************************
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2006 */
+/* Copyright (c) University of Cambridge 1995 - 2014 */
/* See the file NOTICE for conditions of use and distribution. */
*/
static BOOL
-lmtp_write_command(int fd, char *format, ...)
+lmtp_write_command(int fd, const char *format, ...)
{
int count, rc;
va_list ap;
if (errno != 0 || buffer[0] == 0) goto RESPONSE_FAILED;
addr->message = string_sprintf("LMTP error after %s: %s", big_buffer,
string_printing(buffer));
+ setflag(addr, af_pass_message); /* Allow message to go to user */
if (buffer[0] == '5') addr->transport_return = FAIL; else
{
addr->basic_errno = ERRNO_RCPT4XX;
if (addr->transport_return != PENDING_OK) continue;
if (lmtp_read_response(out, buffer, sizeof(buffer), '2', timeout))
+ {
addr->transport_return = OK;
-
+ if ((log_extra_selector & LX_smtp_confirmation) != 0)
+ {
+ uschar *s = string_printing(buffer);
+ addr->message = (s == buffer)? (uschar *)string_copy(s) : s;
+ }
+ }
/* If the response has failed badly, use it for all the remaining pending
addresses and give up. */
addr->message = string_sprintf("LMTP error after %s: %s", big_buffer,
string_printing(buffer));
addr->transport_return = (buffer[0] == '5')? FAIL : DEFER;
+ setflag(addr, af_pass_message); /* Allow message to go to user */
}
}
}