From 19b9dc856cc9406bc685eed974a127f327a42815 Mon Sep 17 00:00:00 2001 From: Philip Hazel Date: Thu, 22 Dec 2005 14:54:50 +0000 Subject: Treat ECONNRESET the same as an end-of-file indication. --- doc/doc-txt/ChangeLog | 5 ++++- src/src/transports/smtp.c | 11 ++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index c91c77b63..dc2d0ceff 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.281 2005/12/22 11:47:24 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.282 2005/12/22 14:54:50 ph10 Exp $ Change log file for Exim from version 4.21 ------------------------------------------- @@ -64,6 +64,9 @@ PH/11 The exinext utility has a -C option for testing purposes, but although the given file was scanned by exinext itself; it wasn't being passed on when Exim was called. +PH/12 In the smtp transport, treat an explicit ECONNRESET error the same as + an end-of-file indication when reading a command response. + Exim version 4.60 ----------------- diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 7447be179..8deaeeadd 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/transports/smtp.c,v 1.18 2005/12/06 10:25:59 ph10 Exp $ */ +/* $Cambridge: exim/src/src/transports/smtp.c,v 1.19 2005/12/22 14:54:50 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -462,11 +462,12 @@ if (buffer[0] != 0) } /* No data was read. If there is no errno, this must be the EOF (i.e. -connection closed) case, which causes deferral. Otherwise, put the host's -identity in the message, leaving the errno value to be interpreted as well. In -all cases, we have to assume the connection is now dead. */ +connection closed) case, which causes deferral. An explicit connection reset +error has the same effect. Otherwise, put the host's identity in the message, +leaving the errno value to be interpreted as well. In all cases, we have to +assume the connection is now dead. */ -if (*errno_value == 0) +if (*errno_value == 0 || *errno_value == ECONNRESET) { *errno_value = ERRNO_SMTPCLOSED; *message = US string_sprintf("Remote host %s [%s] closed connection " -- cgit v1.2.3