ph10 2005/12/22 14:54:50 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src/transports smtp.c
Log:
Treat ECONNRESET the same as an end-of-file indication.
Revision Changes Path
1.282 +3 -0 exim/exim-doc/doc-txt/ChangeLog
1.19 +5 -4 exim/exim-src/src/transports/smtp.c
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.281
retrieving revision 1.282
diff -u -r1.281 -r1.282
--- ChangeLog 22 Dec 2005 11:47:24 -0000 1.281
+++ ChangeLog 22 Dec 2005 14:54:50 -0000 1.282
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.281 2005/12/22 11:47:24 ph10 Exp $
+$Cambridge: exim/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
-------------------------------------------
@@ -63,6 +63,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
Index: smtp.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/transports/smtp.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- smtp.c 6 Dec 2005 10:25:59 -0000 1.18
+++ smtp.c 22 Dec 2005 14:54:50 -0000 1.19
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/transports/smtp.c,v 1.18 2005/12/06 10:25:59 ph10 Exp $ */
+/* $Cambridge: exim/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 @@
}
/* 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 "