X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/94759fce86e40abab9d6d98034e18707a87878eb..d12746bc15d83ab821be36975da0179672708bc1:/src/src/transports/lmtp.c diff --git a/src/src/transports/lmtp.c b/src/src/transports/lmtp.c index cea28c943..240d78b21 100644 --- a/src/src/transports/lmtp.c +++ b/src/src/transports/lmtp.c @@ -223,20 +223,21 @@ Returns: TRUE if successful, FALSE if not, with errno set static BOOL lmtp_write_command(int fd, const char *format, ...) { -int count, rc; +gstring gs = { .size = big_buffer_size, .ptr = 0, .s = big_buffer }; +int rc; va_list ap; + va_start(ap, format); -if (!string_vformat(big_buffer, big_buffer_size, CS format, ap)) +if (!string_vformat(&gs, FALSE, CS format, ap)) { va_end(ap); errno = ERRNO_SMTPFORMAT; return FALSE; } va_end(ap); -count = Ustrlen(big_buffer); -DEBUG(D_transport|D_v) debug_printf(" LMTP>> %s", big_buffer); -rc = write(fd, big_buffer, count); -big_buffer[count-2] = 0; /* remove \r\n for debug and error message */ +DEBUG(D_transport|D_v) debug_printf(" LMTP>> %s", string_from_gstring(&gs)); +rc = write(fd, gs.s, gs.ptr); +gs.ptr -= 2; string_from_gstring(&gs); /* remove \r\n for debug and error message */ if (rc > 0) return TRUE; DEBUG(D_transport) debug_printf("write failed: %s\n", strerror(errno)); return FALSE;