X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Fsmtp_out.c;h=c19d12d43599c5baa5d94ffb9ede2a762ceed0cc;hb=b4f579d134197249b448cb5d8abf801ba4c729bb;hp=d8cb42e01e11e8dd711d7aabe336551dba5d1c25;hpb=01603eec64d42431f182b33008206facfc7f800e;p=exim.git diff --git a/src/src/smtp_out.c b/src/src/smtp_out.c index d8cb42e01..c19d12d43 100644 --- a/src/src/smtp_out.c +++ b/src/src/smtp_out.c @@ -589,14 +589,14 @@ Arguments: inblock the SMTP input block (contains holding buffer, socket, etc.) buffer where to put the line size space available for the line - timeout the timeout to use when reading a packet + timelimit deadline for reading the lime, seconds past epoch Returns: length of a line that has been put in the buffer -1 otherwise, with errno set */ static int -read_response_line(smtp_inblock *inblock, uschar *buffer, int size, int timeout) +read_response_line(smtp_inblock *inblock, uschar *buffer, int size, time_t timelimit) { uschar *p = buffer; uschar *ptr = inblock->ptr; @@ -639,9 +639,9 @@ for (;;) /* Need to read a new input packet. */ - if((rc = ip_recv(cctx, inblock->buffer, inblock->buffersize, timeout)) <= 0) + if((rc = ip_recv(cctx, inblock->buffer, inblock->buffersize, timelimit)) <= 0) { - DEBUG(D_deliver|D_transport|D_acl) + DEBUG(D_deliver|D_transport|D_acl|D_v) debug_printf_indent(errno ? " SMTP(%s)<<\n" : " SMTP(closed)<<\n", strerror(errno)); break; @@ -696,10 +696,11 @@ smtp_read_response(void * sx0, uschar * buffer, int size, int okdigit, smtp_context * sx = sx0; uschar * ptr = buffer; int count = 0; +time_t timelimit = time(NULL) + timeout; errno = 0; /* Ensure errno starts out zero */ -#ifdef EXPERIMENTAL_PIPE_CONNECT +#ifdef SUPPORT_PIPE_CONNECT if (sx->pending_BANNER || sx->pending_EHLO) { int rc; @@ -718,7 +719,7 @@ response. */ for (;;) { - if ((count = read_response_line(&sx->inblock, ptr, size, timeout)) < 0) + if ((count = read_response_line(&sx->inblock, ptr, size, timelimit)) < 0) return FALSE; HDEBUG(D_transport|D_acl|D_v)