ph10 2005/01/25 14:16:34 GMT
Modified files:
exim-src/exim_monitor em_globals.c
exim-src/src EDITME expand.c globals.c globals.h
host.c spool_in.c spool_out.c
exim-test-orig/AutoTest/confs 077
exim-test-orig/AutoTest/log 077
exim-test-orig/AutoTest/mail 077.ph10
exim-test-orig/AutoTest/scripts 077 078 503
exim-test-orig/AutoTest/stderr 437 503
exim-test-orig/AutoTest/stdout 077 503
exim-test-orig/DNSzones db.10
Log:
(1) Added $host_lookup_deferred.
(2) Some old tests needed tweaking because of previous changes.
(3) Comment added to EDITME re USE_READLINE.
Revision Changes Path
1.5 +1 -0 exim/exim-src/exim_monitor/em_globals.c
1.7 +4 -0 exim/exim-src/src/EDITME
1.12 +1 -0 exim/exim-src/src/expand.c
1.15 +1 -0 exim/exim-src/src/globals.c
1.11 +1 -0 exim/exim-src/src/globals.h
1.8 +29 -10 exim/exim-src/src/host.c
1.6 +3 -0 exim/exim-src/src/spool_in.c
1.5 +1 -0 exim/exim-src/src/spool_out.c
1.2 +2 -1 exim/exim-test-orig/AutoTest/confs/077
1.2 +6 -0 exim/exim-test-orig/AutoTest/log/077
1.2 +21 -0 exim/exim-test-orig/AutoTest/mail/077.ph10
1.2 +18 -0 exim/exim-test-orig/AutoTest/scripts/077
1.2 +5 -5 exim/exim-test-orig/AutoTest/scripts/078
1.2 +1 -2 exim/exim-test-orig/AutoTest/scripts/503
1.4 +0 -1 exim/exim-test-orig/AutoTest/stderr/437
1.2 +0 -1 exim/exim-test-orig/AutoTest/stderr/503
1.2 +12 -0 exim/exim-test-orig/AutoTest/stdout/077
1.2 +1 -2 exim/exim-test-orig/AutoTest/stdout/503
1.3 +6 -1 exim/exim-test-orig/DNSzones/db.10
Index: em_globals.c
===================================================================
RCS file: /home/cvs/exim/exim-src/exim_monitor/em_globals.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- em_globals.c 4 Jan 2005 10:00:42 -0000 1.4
+++ em_globals.c 25 Jan 2005 14:16:33 -0000 1.5
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/exim_monitor/em_globals.c,v 1.4 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/exim_monitor/em_globals.c,v 1.5 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim Monitor *
@@ -144,6 +144,7 @@
header_line *header_last = NULL;
header_line *header_list = NULL;
+BOOL host_lookup_deferred = FALSE;
BOOL host_lookup_failed = FALSE;
uschar *interface_address = NULL;
int interface_port = 0;
Index: EDITME
===================================================================
RCS file: /home/cvs/exim/exim-src/src/EDITME,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- EDITME 17 Dec 2004 14:52:44 -0000 1.6
+++ EDITME 25 Jan 2005 14:16:33 -0000 1.7
@@ -1,4 +1,4 @@
-# $Cambridge: exim/exim-src/src/EDITME,v 1.6 2004/12/17 14:52:44 ph10 Exp $
+# $Cambridge: exim/exim-src/src/EDITME,v 1.7 2005/01/25 14:16:33 ph10 Exp $
##################################################
# The Exim mail transport agent #
@@ -818,6 +818,10 @@
# current run is maintained.
# USE_READLINE=yes
+
+# You may need to add -ldl to EXTRA_LIBS when you set USE_READLINE=yes.
+# Note that this option adds to the size of the Exim binary, because the
+# dynamic loading library is not otherwise included.
Index: expand.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/expand.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- expand.c 13 Jan 2005 10:09:36 -0000 1.11
+++ expand.c 25 Jan 2005 14:16:33 -0000 1.12
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/expand.c,v 1.11 2005/01/13 10:09:36 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/expand.c,v 1.12 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -351,6 +351,7 @@
{ "host", vtype_stringptr, &deliver_host },
{ "host_address", vtype_stringptr, &deliver_host_address },
{ "host_data", vtype_stringptr, &host_data },
+ { "host_lookup_deferred",vtype_int, &host_lookup_deferred },
{ "host_lookup_failed", vtype_int, &host_lookup_failed },
{ "inode", vtype_ino, &deliver_inode },
{ "interface_address", vtype_stringptr, &interface_address },
Index: globals.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- globals.c 12 Jan 2005 14:41:12 -0000 1.14
+++ globals.c 25 Jan 2005 14:16:33 -0000 1.15
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.c,v 1.14 2005/01/12 14:41:12 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.c,v 1.15 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -559,6 +559,7 @@
uschar *host_data = NULL;
BOOL host_find_failed_syntax= FALSE;
uschar *host_lookup = NULL;
+BOOL host_lookup_deferred = FALSE;
BOOL host_lookup_failed = FALSE;
uschar *host_lookup_order = US"bydns:byaddr";
uschar *host_lookup_msg = US"";
Index: globals.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/globals.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- globals.h 4 Jan 2005 10:00:42 -0000 1.10
+++ globals.h 25 Jan 2005 14:16:33 -0000 1.11
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/globals.h,v 1.10 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/globals.h,v 1.11 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -331,6 +331,7 @@
extern BOOL host_checking_callout; /* TRUE if real callout wanted */
extern uschar *host_data; /* Obtained from lookup in ACL */
extern uschar *host_lookup; /* For which IP addresses are always looked up */
+extern BOOL host_lookup_deferred; /* TRUE if lookup deferred */
extern BOOL host_lookup_failed; /* TRUE if lookup failed */
extern uschar *host_lookup_order; /* Order of host lookup types */
extern uschar *host_lookup_msg; /* Text for why it failed */
Index: host.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/host.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- host.c 12 Jan 2005 12:17:41 -0000 1.7
+++ host.c 25 Jan 2005 14:16:33 -0000 1.8
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/host.c,v 1.7 2005/01/12 12:17:41 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/host.c,v 1.8 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1336,9 +1336,11 @@
The variable host_lookup_msg is set to an empty string on sucess, or to a
reason for the failure otherwise, in a form suitable for tagging onto an error
-message, and also host_lookup_failed is set TRUE if the lookup failed. Any
-dynamically constructed string for host_lookup_msg must be in permanent store,
-because it might be used for several incoming messages on the same SMTP
+message, and also host_lookup_failed is set TRUE if the lookup failed. If there
+was a defer, host_lookup_deferred is set TRUE.
+
+Any dynamically constructed string for host_lookup_msg must be in permanent
+store, because it might be used for several incoming messages on the same SMTP
connection. */
int
@@ -1355,6 +1357,8 @@
dns_answer dnsa;
dns_scan dnss;
+host_lookup_deferred = host_lookup_failed = FALSE;
+
HDEBUG(D_host_lookup)
debug_printf("looking up host name for %s\n", sender_host_address);
@@ -1366,6 +1370,7 @@
{
HDEBUG(D_host_lookup)
debug_printf("Test harness: host name lookup returns DEFER\n");
+ host_lookup_deferred = TRUE;
return DEFER;
}
@@ -1455,6 +1460,7 @@
{
HDEBUG(D_host_lookup)
debug_printf("IP address PTR lookup gave temporary error\n");
+ host_lookup_deferred = TRUE;
return DEFER;
}
}
@@ -1465,9 +1471,12 @@
{
HDEBUG(D_host_lookup)
debug_printf("IP address lookup using gethostbyaddr()\n");
-
rc = host_name_lookup_byaddr();
- if (rc == DEFER) return rc; /* Can't carry on */
+ if (rc == DEFER)
+ {
+ host_lookup_deferred = TRUE;
+ return rc; /* Can't carry on */
+ }
if (rc == OK) break; /* Found a name */
}
} /* Loop for bydns/byaddr scanning */
@@ -1481,8 +1490,7 @@
log_write(L_host_lookup_failed, LOG_MAIN, "no host name found for IP "
"address %s", sender_host_address);
host_lookup_msg = US" (failed to find host name from IP address)";
-
-host_lookup_failed = TRUE;
+ host_lookup_failed = TRUE;
return FAIL;
}
@@ -1570,6 +1578,7 @@
else if (rc == HOST_FIND_AGAIN)
{
HDEBUG(D_host_lookup) debug_printf("temporary error for host name lookup\n");
+ host_lookup_deferred = TRUE;
return DEFER;
}
else
@@ -1614,7 +1623,6 @@
host_lookup_msg = string_sprintf(" (%s does not match any IP address for %s)",
sender_host_address, save_hostname);
store_pool = old_pool;
-
host_lookup_failed = TRUE;
return FAIL;
}
@@ -1664,6 +1672,19 @@
uschar **addrlist;
host_item *last = NULL;
BOOL temp_error = FALSE;
+#if HAVE_IPV6
+int af;
+#endif
+
+/* If we are in the test harness, a name ending in .test.again.dns always
+forces a temporary error response. */
+
+if (running_in_test_harness)
+ {
+ uschar *endname = host->name + Ustrlen(host->name);
+ if (Ustrcmp(endname - 14, "test.again.dns") == 0)
+ return HOST_FIND_AGAIN;
+ }
/* In an IPv6 world, we need to scan for both kinds of address, so go round the
loop twice. Note that we have ensured that AF_INET6 is defined even in an IPv4
@@ -1672,8 +1693,6 @@
standalone). */
#if HAVE_IPV6
- int af;
-
#ifndef STAND_ALONE
if (dns_ipv4_lookup != NULL &&
match_isinlist(host->name, &dns_ipv4_lookup, 0, NULL, NULL, MCL_DOMAIN,
Index: spool_in.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/spool_in.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- spool_in.c 12 Jan 2005 12:24:13 -0000 1.5
+++ spool_in.c 25 Jan 2005 14:16:33 -0000 1.6
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/spool_in.c,v 1.5 2005/01/12 12:24:13 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/spool_in.c,v 1.6 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -250,6 +250,7 @@
deliver_manual_thaw = FALSE;
/* dont_deliver must NOT be reset */
header_list = header_last = NULL;
+host_lookup_deferred = FALSE;
host_lookup_failed = FALSE;
interface_address = NULL;
interface_port = 0;
@@ -387,6 +388,8 @@
else if (Ustrncmp(big_buffer, "-bmi_verdicts ", 14) == 0)
bmi_verdicts = string_copy(big_buffer + 14);
#endif
+ else if (Ustrcmp(big_buffer, "-host_lookup_deferred") == 0)
+ host_lookup_deferred = TRUE;
else if (Ustrcmp(big_buffer, "-host_lookup_failed") == 0)
host_lookup_failed = TRUE;
else if (Ustrncmp(big_buffer, "-body_linecount", 15) == 0)
Index: spool_out.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/spool_out.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- spool_out.c 4 Jan 2005 10:00:42 -0000 1.4
+++ spool_out.c 25 Jan 2005 14:16:33 -0000 1.5
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/spool_out.c,v 1.4 2005/01/04 10:00:42 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/spool_out.c,v 1.5 2005/01/25 14:16:33 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -215,6 +215,7 @@
if (deliver_firsttime) fprintf(f, "-deliver_firsttime\n");
if (deliver_freeze) fprintf(f, "-frozen %d\n", deliver_frozen_at);
if (dont_deliver) fprintf(f, "-N\n");
+if (host_lookup_deferred) fprintf(f, "-host_lookup_deferred\n");
if (host_lookup_failed) fprintf(f, "-host_lookup_failed\n");
if (sender_local) fprintf(f, "-local\n");
if (local_error_message) fprintf(f, "-localerror\n");
Index: 077
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/confs/077,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 077 8 Oct 2004 14:49:15 -0000 1.1
+++ 077 25 Jan 2005 14:16:34 -0000 1.2
@@ -47,7 +47,8 @@
appendfile:
driver = appendfile
file = DIR/test-mail/$local_part
- headers_add = host_lookup_failed: $host_lookup_failed
+ headers_add = host_lookup_failed: $host_lookup_failed\n\
+ host_lookup_deferred: $host_lookup_deferred
# End of Exim 4 configuration
Index: 077
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/log/077,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 077 8 Oct 2004 14:49:31 -0000 1.1
+++ 077 25 Jan 2005 14:16:34 -0000 1.2
@@ -2,3 +2,9 @@
1999-03-02 09:44:33 10HmaX-0005vi-00 <= ph10@??? H=[10.11.12.13] U=root P=smtp S=185
1999-03-02 09:44:33 10HmaX-0005vi-00 => ph10 <ph10@???> R=localuser T=appendfile
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaY-0005vi-00 <= ph10@??? H=[99.99.99.99] U=root P=smtp S=185
+1999-03-02 09:44:33 10HmaY-0005vi-00 => ph10 <ph10@???> R=localuser T=appendfile
+1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
+1999-03-02 09:44:33 10HmaZ-0005vi-00 <= ph10@??? H=x.test.again.dns [10.99.99.96] U=root P=smtp S=202
+1999-03-02 09:44:33 10HmaZ-0005vi-00 => ph10 <ph10@???> R=localuser T=appendfile
+1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
Index: 077.ph10
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/mail/077.ph10,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 077.ph10 8 Oct 2004 14:49:42 -0000 1.1
+++ 077.ph10 25 Jan 2005 14:16:34 -0000 1.2
@@ -4,6 +4,27 @@
id 10HmaX-0005vi-00
for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
host_lookup_failed: 1
+host_lookup_deferred: 0
+
+This is a test message
+
+From ph10@??? Tue Mar 02 09:44:33 1999
+Received: from [99.99.99.99] (ident=root)
+ by xoanon.csi.cam.ac.uk with smtp (Exim x.yz)
+ id 10HmaY-0005vi-00
+ for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
+host_lookup_failed: 0
+host_lookup_deferred: 1
+
+This is a test message
+
+From ph10@??? Tue Mar 02 09:44:33 1999
+Received: from x.test.again.dns ([10.99.99.96] ident=root)
+ by xoanon.csi.cam.ac.uk with smtp (Exim x.yz)
+ id 10HmaZ-0005vi-00
+ for ph10@???; Tue, 2 Mar 1999 09:44:33 +0000
+host_lookup_failed: 0
+host_lookup_deferred: 1
This is a test message
Index: 077
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/scripts/077,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 077 8 Oct 2004 14:49:52 -0000 1.1
+++ 077 25 Jan 2005 14:16:34 -0000 1.2
@@ -26,3 +26,21 @@
rcpt to:<ph10@???>
quit
****
+0
+really exim -odi -oMa 99.99.99.99 -bs
+mail from:<ph10@???>
+rcpt to:<ph10@???>
+data
+This is a test message
+.
+quit
+****
+0
+really exim -odi -oMa 10.99.99.96 -bs
+mail from:<ph10@???>
+rcpt to:<ph10@???>
+data
+This is a test message
+.
+quit
+****
Index: 078
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/scripts/078,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 078 8 Oct 2004 14:49:52 -0000 1.1
+++ 078 25 Jan 2005 14:16:34 -0000 1.2
@@ -43,7 +43,7 @@
This is a test message
****
0
-millisleep 500
+sleep 1
****
0
exim -odi ph10
@@ -52,7 +52,7 @@
This is a test message
****
0
-millisleep 500
+sleep 1
****
0
exim -odi ph10
@@ -61,7 +61,7 @@
This is a test message
****
0
-millisleep 500
+sleep 1
****
0 deliberate syntax fail
exim -odi ph10
@@ -70,7 +70,7 @@
This is a test message
****
0
-millisleep 500
+sleep 1
****
0 overlongname
exim -odi ph10
@@ -84,7 +84,7 @@
This is a test message
****
0
-millisleep 500
+sleep 1
****
0
exim -odi philip
Index: 503
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/scripts/503,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 503 8 Oct 2004 14:49:53 -0000 1.1
+++ 503 25 Jan 2005 14:16:34 -0000 1.2
@@ -53,8 +53,7 @@
220 server ready
HELO
*sleep 2
-QUIT
-220 OK
+*eof
****
0
exim -bhc 1.2.3.4
Index: 437
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stderr/437,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- 437 5 Nov 2004 16:53:28 -0000 1.3
+++ 437 25 Jan 2005 14:16:34 -0000 1.4
@@ -687,7 +687,6 @@
SMTP<< 250 OK
SMTP>> RCPT TO:<myhost.test.ex-dddddddd-testing@otherhost51>
SMTP timeout
- SMTP>> QUIT
wrote callout cache domain record:
result=1 postmaster=0 random=0
LOG: MAIN REJECT
Index: 503
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stderr/503,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 503 8 Oct 2004 14:50:08 -0000 1.1
+++ 503 25 Jan 2005 14:16:34 -0000 1.2
@@ -314,7 +314,6 @@
>>> SMTP<< 220 server ready
>>> SMTP>> HELO myhost.test.ex
>>> SMTP timeout
->>> SMTP>> QUIT
>>> overall timeout for callout exceeded
>>> ----------- end verify ------------
>>> accept: condition test deferred
Index: 077
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/077,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 077 8 Oct 2004 14:50:13 -0000 1.1
+++ 077 25 Jan 2005 14:16:34 -0000 1.2
@@ -32,3 +32,15 @@
250 Accepted
550 relay not permitted
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 OK
+250 Accepted
+354 Enter message, ending with "." on a line by itself
+250 OK id=10HmaY-0005vi-00
+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 OK
+250 Accepted
+354 Enter message, ending with "." on a line by itself
+250 OK id=10HmaZ-0005vi-00
+221 xoanon.csi.cam.ac.uk closing connection
Index: 503
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/AutoTest/stdout/503,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 503 8 Oct 2004 14:50:14 -0000 1.1
+++ 503 25 Jan 2005 14:16:34 -0000 1.2
@@ -77,6 +77,5 @@
220 server ready
HELO myhost.test.ex
*sleep 2
-QUIT
-220 OK
+Expected EOF read from client
End of script
Index: db.10
===================================================================
RCS file: /home/cvs/exim/exim-test-orig/DNSzones/db.10,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- db.10 22 Dec 2004 10:27:23 -0000 1.2
+++ db.10 25 Jan 2005 14:16:34 -0000 1.3
@@ -8,7 +8,7 @@
NS xoanon.csi.cam.ac.uk.
-; $Cambridge: exim/exim-test-orig/DNSzones/db.10,v 1.2 2004/12/22 10:27:23 ph10 Exp $
+; $Cambridge: exim/exim-test-orig/DNSzones/db.10,v 1.3 2005/01/25 14:16:34 ph10 Exp $
; This is a testing zone file for use on xoanon.csi.cam.ac.uk when testing
; DNS handling in Exim. This is a fake zone of no real use. The zone name
@@ -50,6 +50,11 @@
97.99.99.10.in-addr.arpa. PTR x.gov.uk.test.ex.
97.99.99.10.in-addr.arpa. PTR x.co.uk.test.ex.
+
+; This points to a name that will give `try again' when looked
+; up from within the test harness.
+
+96.99.99.10.in-addr.arpa. PTR x.test.again.dns.
; This IP number points back to a legitimate host, but also to a name that
; isn't forward registered