X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Ftransports%2Flmtp.c;h=de1ee166b12fcbf57e7e4b8699497cb79950ac58;hb=refs%2Ftags%2Fexim-4_90_RC1;hp=1f4d7a6bf56ee9ec210436f05e5cfa47a23f87db;hpb=6c6d6e483411af2c087ff258f4041d38eb65e775;p=exim.git diff --git a/src/src/transports/lmtp.c b/src/src/transports/lmtp.c index 1f4d7a6bf..de1ee166b 100644 --- a/src/src/transports/lmtp.c +++ b/src/src/transports/lmtp.c @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2015 */ +/* Copyright (c) University of Cambridge 1995 - 2017 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -40,6 +40,17 @@ address can appear in the tables drtables.c. */ int lmtp_transport_options_count = sizeof(lmtp_transport_options)/sizeof(optionlist); + +#ifdef MACRO_PREDEF + +/* Dummy values */ +lmtp_transport_options_block lmtp_transport_option_defaults = {0}; +void lmtp_transport_init(transport_instance *tblock) {} +BOOL lmtp_transport_entry(transport_instance *tblock, address_item *addr) {return FALSE;} + +#else /*!MACRO_PREDEF*/ + + /* Default private options block for the lmtp transport. */ lmtp_transport_options_block lmtp_transport_option_defaults = { @@ -106,7 +117,7 @@ Arguments: more_errno from the top address for use with ERRNO_FILTER_FAIL buffer the LMTP response buffer yield where to put a one-digit LMTP response code - message where to put an errror message + message where to put an error message Returns: TRUE if a "QUIT" command should be sent, else FALSE */ @@ -217,6 +228,7 @@ va_list ap; va_start(ap, format); if (!string_vformat(big_buffer, big_buffer_size, CS format, ap)) { + va_end(ap); errno = ERRNO_SMTPFORMAT; return FALSE; } @@ -608,6 +620,13 @@ for (addr = addrlist; addr != NULL; addr = addr->next) if (send_data) { BOOL ok; + transport_ctx tctx = { + {fd_in}, + tblock, + addrlist, + US".", US"..", + ob->options + }; if (!lmtp_write_command(fd_in, "DATA\r\n")) goto WRITE_FAILED; if (!lmtp_read_response(out, buffer, sizeof(buffer), '3', timeout)) @@ -627,9 +646,7 @@ if (send_data) debug_printf(" LMTP>> writing message and terminating \".\"\n"); transport_count = 0; - ok = transport_write_message(addrlist, fd_in, ob->options, 0, - tblock->add_headers, tblock->remove_headers, US".", US"..", - tblock->rewrite_rules, tblock->rewrite_existflags); + ok = transport_write_message(&tctx, 0); /* Failure can either be some kind of I/O disaster (including timeout), or the failure of a transport filter or the expansion of added headers. */ @@ -658,7 +675,7 @@ if (send_data) { const uschar *s = string_printing(buffer); /* de-const safe here as string_printing known to have alloc'n'copied */ - addr->message = (s == buffer)? (uschar *)string_copy(s) : US s; + addr->message = (s == buffer)? US string_copy(s) : US s; } } /* If the response has failed badly, use it for all the remaining pending @@ -785,4 +802,5 @@ MINUS_N: return FALSE; } +#endif /*!MACRO_PREDEF*/ /* End of transport/lmtp.c */