X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/8768d5483a5894400ae1f70cda1beb44ed9b087c..d12746bc15d83ab821be36975da0179672708bc1:/src/src/transport.c diff --git a/src/src/transport.c b/src/src/transport.c index 5c72e2e2b..8ccdd0389 100644 --- a/src/src/transport.c +++ b/src/src/transport.c @@ -256,7 +256,7 @@ for (i = 0; i < 100; i++) else { - alarm(local_timeout); + ALARM(local_timeout); rc = #ifdef SUPPORT_TLS @@ -269,7 +269,7 @@ for (i = 0; i < 100; i++) write(fd, block, len); save_errno = errno; - local_timeout = alarm(0); + local_timeout = ALARM_CLR(0); if (sigalrm_seen) { errno = ETIMEDOUT; @@ -375,13 +375,15 @@ BOOL transport_write_string(int fd, const char *format, ...) { transport_ctx tctx = {{0}}; +gstring gs = { .size = big_buffer_size, .ptr = 0, .s = big_buffer }; va_list ap; + va_start(ap, format); -if (!string_vformat(big_buffer, big_buffer_size, format, ap)) +if (!string_vformat(&gs, FALSE, format, ap)) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "overlong formatted string in transport"); va_end(ap); tctx.u.fd = fd; -return transport_write_block(&tctx, big_buffer, Ustrlen(big_buffer), FALSE); +return transport_write_block(&tctx, gs.s, gs.ptr, FALSE); } @@ -1300,9 +1302,9 @@ chunk_ptr = deliver_out_buffer; for (;;) { sigalrm_seen = FALSE; - alarm(transport_filter_timeout); + ALARM(transport_filter_timeout); len = read(fd_read, deliver_in_buffer, DELIVER_IN_BUFFER_SIZE); - alarm(0); + ALARM_CLR(0); if (sigalrm_seen) { errno = ETIMEDOUT;