ph10 2005/01/14 10:25:33 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src verify.c
exim-test-orig/AutoTest/log 552
exim-test-orig/AutoTest/rejectlog 552
exim-test-orig/AutoTest/scripts 552
exim-test-orig/AutoTest/stdout 552
Added files:
exim-test-orig/AutoTest/stderr 552
Log:
Don't send QUIT after a timeout in a callout connection.
Revision Changes Path
1.71 +5 -0 exim/exim-doc/doc-txt/ChangeLog
1.13 +3 -1 exim/exim-src/src/verify.c
1.2 +2 -0 exim/exim-test-orig/AutoTest/log/552
1.2 +2 -0 exim/exim-test-orig/AutoTest/rejectlog/552
1.3 +29 -1 exim/exim-test-orig/AutoTest/scripts/552
1.1 +56 -0 exim/exim-test-orig/AutoTest/stderr/552 (new)
1.3 +30 -0 exim/exim-test-orig/AutoTest/stdout/552
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- ChangeLog 13 Jan 2005 16:15:52 -0000 1.70
+++ ChangeLog 14 Jan 2005 10:25:33 -0000 1.71
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.70 2005/01/13 16:15:52 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.71 2005/01/14 10:25:33 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -316,6 +316,11 @@
71. Change 4.23/11 added synchronization checking at the start of an SMTP
session; change 4.31/43 added the unwanted input to the log line - except
that it did not do this in the start of session case. It now does.
+
+72. After a timeout in a callout SMTP session, Exim still sent a QUIT command.
+ This is wrong and can cause the other end to generate a synchronization
+ error if it is another Exim or anything else that does the synchronization
+ check. A QUIT command is no longer sent after a timeout.
Exim version 4.43
Index: verify.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/verify.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- verify.c 12 Jan 2005 15:41:27 -0000 1.12
+++ verify.c 14 Jan 2005 10:25:33 -0000 1.13
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/verify.c,v 1.12 2005/01/12 15:41:27 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/verify.c,v 1.13 2005/01/14 10:25:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -377,6 +377,7 @@
smtp_outblock outblock;
int host_af;
int port = 25;
+ BOOL send_quit = TRUE;
uschar *helo = US"HELO";
uschar *interface = NULL; /* Outgoing interface to use; NULL => any */
uschar inbuffer[4096];
@@ -609,6 +610,7 @@
if (errno == ETIMEDOUT)
{
HDEBUG(D_verify) debug_printf("SMTP timeout\n");
+ send_quit = FALSE;
}
else if (errno == 0)
{
@@ -637,7 +639,7 @@
/* End the SMTP conversation and close the connection. */
- (void)smtp_write_command(&outblock, FALSE, "QUIT\r\n");
+ if (send_quit) (void)smtp_write_command(&outblock, FALSE, "QUIT\r\n");
close(inblock.sock);
} /* Loop through all hosts, while !done */
Index: 552
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/log/552,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 552 8 Oct 2004 14:49:31 -0000 1.1
+++ 552 14 Jan 2005 10:25:33 -0000 1.2
@@ -6,3 +6,5 @@
1999-03-02 09:44:33 U=ph10 F=<x9@???> rejected RCPT <r9@???>: Sender verify failed
1999-03-02 09:44:33 U=ph10 sender verify fail for <x9@???>
1999-03-02 09:44:33 U=ph10 F=<x9@???> rejected RCPT <r9@???>: Sender verify failed
+1999-03-02 09:44:33 U=ph10 F=<x11@???> temporarily rejected RCPT r11@???: Could not complete recipient verify callout
+1999-03-02 09:44:33 U=ph10 F=<x11@???> temporarily rejected RCPT r11@???: Could not complete recipient verify callout
Index: 552
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/rejectlog/552,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 552 8 Oct 2004 14:49:51 -0000 1.1
+++ 552 14 Jan 2005 10:25:33 -0000 1.2
@@ -6,3 +6,5 @@
1999-03-02 09:44:33 U=ph10 F=<x9@???> rejected RCPT <r9@???>: Sender verify failed
1999-03-02 09:44:33 U=ph10 sender verify fail for <x9@???>
1999-03-02 09:44:33 U=ph10 F=<x9@???> rejected RCPT <r9@???>: Sender verify failed
+1999-03-02 09:44:33 U=ph10 F=<x11@???> temporarily rejected RCPT r11@???: Could not complete recipient verify callout
+1999-03-02 09:44:33 U=ph10 F=<x11@???> temporarily rejected RCPT r11@???: Could not complete recipient verify callout
Index: 552
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/scripts/552,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 552 24 Nov 2004 10:48:25 -0000 1.2
+++ 552 14 Jan 2005 10:25:33 -0000 1.3
@@ -1,4 +1,4 @@
-0 recipient callouts - sender/postmaster and caching
+0 recipient callouts - sender/postmaster caching and QUIT after timeout
server 1225 3
220 Server ready
HELO
@@ -162,4 +162,32 @@
****
0
dump callout
+****
+0
+server 1225
+220 Server ready
+HELO
+250 OK
+MAIL FROM
+250 OK
+RCPT TO
+*sleep 2
+****
+0
+exim -DUSE_SENDER= -bs -d-all+verify -v
+ehlo xxxx
+mail from: x11@???
+rcpt to: r11@???
+quit
+****
+0
+server 1225
+*sleep 2
+****
+0
+exim -DUSE_SENDER= -bs -d-all+verify -v
+ehlo xxxx
+mail from: x11@???
+rcpt to: r11@???
+quit
****
Index: 552
====================================================================
Exim version x.yz uid=1169 gid=1169 pid=pppp D=40000001
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
Fixed never_users: 0
configuration file is /source/exim4/AutoTest/confs/552
log selectors = xxxxxxxx xxxxxxxx
trusted user
admin user
LOG: smtp_connection MAIN
SMTP connection from ph10
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Verifying r11@???
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering r11@???
Attempting full verification using callout
callout cache: found domain record
callout cache: no address record found
interface=NULL port=1225
Connecting to 127.0.0.1 [127.0.0.1]:1225 ... connected
SMTP<< 220 Server ready
SMTP>> HELO xoanon.csi.cam.ac.uk
SMTP<< 250 OK
SMTP>> MAIL FROM:<>
SMTP<< 250 OK
SMTP>> RCPT TO:<r11@???>
SMTP timeout
wrote callout cache domain record:
result=1 postmaster=0 random=0
LOG: MAIN REJECT
U=ph10 F=<x11@???> temporarily rejected RCPT r11@???: Could not complete recipient verify callout
LOG: smtp_connection MAIN
SMTP connection from ph10 closed by QUIT
>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
Exim version x.yz uid=1169 gid=1169 pid=pppp D=40000001
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql passwd pgsql testdb
Fixed never_users: 0
configuration file is /source/exim4/AutoTest/confs/552
log selectors = xxxxxxxx xxxxxxxx
trusted user
admin user
LOG: smtp_connection MAIN
SMTP connection from ph10
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Verifying r11@???
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering r11@???
Attempting full verification using callout
callout cache: found domain record
callout cache: no address record found
interface=NULL port=1225
Connecting to 127.0.0.1 [127.0.0.1]:1225 ... connected
SMTP timeout
LOG: MAIN REJECT
U=ph10 F=<x11@???> temporarily rejected RCPT r11@???: Could not complete recipient verify callout
LOG: smtp_connection MAIN
SMTP connection from ph10 closed by QUIT
>>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>>
Index: 552
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/552,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 552 24 Nov 2004 10:48:25 -0000 1.2
+++ 552 14 Jan 2005 10:25:33 -0000 1.3
@@ -92,6 +92,22 @@
07-Mar-2000 12:21:52 r1@???/<s2@???> callout=accept
07-Mar-2000 12:21:52 r9@???/<x9@???> callout=reject
07-Mar-2000 12:21:52 two.test.ex callout=accept postmaster=unknown random=accept (07-Mar-2000 12:21:52)
+220 xoanon.csi.cam.ac.uk ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+250-xoanon.csi.cam.ac.uk Hello ph10 at xxxx
+250-SIZE 52428800
+250-PIPELINING
+250 HELP
+250 OK
+451 Could not complete recipient verify callout
+221 xoanon.csi.cam.ac.uk closing connection
+220 xoanon.csi.cam.ac.uk ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000
+250-xoanon.csi.cam.ac.uk Hello ph10 at xxxx
+250-SIZE 52428800
+250-PIPELINING
+250 HELP
+250 OK
+451 Could not complete recipient verify callout
+221 xoanon.csi.cam.ac.uk closing connection
******** SERVER ********
Listening on port 1225 ...
@@ -187,4 +203,18 @@
250 OK
QUIT
250 OK
+End of script
+Listening on port 1225 ...
+Connection request from [127.0.0.1]
+220 Server ready
+HELO xoanon.csi.cam.ac.uk
+250 OK
+MAIL FROM:<>
+250 OK
+RCPT TO:<r11@???>
+*sleep 2
+End of script
+Listening on port 1225 ...
+Connection request from [127.0.0.1]
+*sleep 2
End of script