Fix "(during SMTP connection from NULL)" bug.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 13 Feb 2006 16:23:57 +0000 (16:23 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Mon, 13 Feb 2006 16:23:57 +0000 (16:23 +0000)
doc/doc-txt/ChangeLog
src/src/smtp_in.c
test/dnszones-src/db.ip4.V4NET

index 4aeffb7..6febd4d 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.294 2006/02/13 12:02:59 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.295 2006/02/13 16:23:57 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -143,6 +143,11 @@ PH/25 Do not write to syslog when running in the test harness. The only
 
 PH/26 Added the /no_tell option to "control=freeze".
 
 
 PH/26 Added the /no_tell option to "control=freeze".
 
+PH/27 If a host name lookup failed very early in a connection, for example, if
+      the IP address matched host_lookup and the reverse lookup yielded a name
+      that did not have a forward lookup, an error message of the form "no IP
+      address found for host xxx.xxx.xxx (during SMTP connection from NULL)"
+      could be logged. Now it outputs the IP address instead of "NULL".
 
 
 Exim version 4.60
 
 
 Exim version 4.60
index cc6486a..a6a14fe 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/smtp_in.c,v 1.31 2006/02/13 12:02:59 ph10 Exp $ */
+/* $Cambridge: exim/src/src/smtp_in.c,v 1.32 2006/02/13 16:23:57 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -626,6 +626,8 @@ for (;;)
 
 /* This function is called when logging information about an SMTP connection.
 It sets up appropriate source information, depending on the type of connection.
 
 /* This function is called when logging information about an SMTP connection.
 It sets up appropriate source information, depending on the type of connection.
+If sender_fullhost is NULL, we are at a very early stage of the connection;
+just use the IP address.
 
 Argument:    none
 Returns:     a string describing the connection
 
 Argument:    none
 Returns:     a string describing the connection
@@ -634,21 +636,24 @@ Returns:     a string describing the connection
 uschar *
 smtp_get_connection_info(void)
 {
 uschar *
 smtp_get_connection_info(void)
 {
+uschar *hostname = (sender_fullhost == NULL)?
+  sender_host_address : sender_fullhost;
+
 if (host_checking)
 if (host_checking)
-  return string_sprintf("SMTP connection from %s", sender_fullhost);
+  return string_sprintf("SMTP connection from %s", hostname);
 
 if (sender_host_unknown || sender_host_notsocket)
   return string_sprintf("SMTP connection from %s", sender_ident);
 
 if (is_inetd)
 
 if (sender_host_unknown || sender_host_notsocket)
   return string_sprintf("SMTP connection from %s", sender_ident);
 
 if (is_inetd)
-  return string_sprintf("SMTP connection from %s (via inetd)", sender_fullhost);
+  return string_sprintf("SMTP connection from %s (via inetd)", hostname);
 
 if ((log_extra_selector & LX_incoming_interface) != 0 &&
      interface_address != NULL)
 
 if ((log_extra_selector & LX_incoming_interface) != 0 &&
      interface_address != NULL)
-  return string_sprintf("SMTP connection from %s I=[%s]:%d", sender_fullhost,
+  return string_sprintf("SMTP connection from %s I=[%s]:%d", hostname,
     interface_address, interface_port);
 
     interface_address, interface_port);
 
-return string_sprintf("SMTP connection from %s", sender_fullhost);
+return string_sprintf("SMTP connection from %s", hostname);
 }
 
 
 }
 
 
index b7419f5..2caad55 100644 (file)
@@ -1,4 +1,4 @@
-; $Cambridge: exim/test/dnszones-src/db.ip4.V4NET,v 1.1 2006/02/06 16:22:56 ph10 Exp $
+; $Cambridge: exim/test/dnszones-src/db.ip4.V4NET,v 1.2 2006/02/13 16:23:57 ph10 Exp $
 
 ; This is a testing reverse zone file for use when testing DNS handling in
 ; Exim. This is a fake zone of no real use - hence no SOA record. The zone name
 
 ; This is a testing reverse zone file for use when testing DNS handling in
 ; Exim. This is a fake zone of no real use - hence no SOA record. The zone name
 96.99.99    PTR    x.test.again.dns.
 
 ; This IP number points back to a legitimate host, but also to a name that
 96.99.99    PTR    x.test.again.dns.
 
 ; This IP number points back to a legitimate host, but also to a name that
-; isn't forward registered
+; does not forward resolve to the same address
 
 90.99.99    PTR    oneback.test.ex.
 90.99.99    PTR    host1.masq.test.ex.
 
 
 90.99.99    PTR    oneback.test.ex.
 90.99.99    PTR    host1.masq.test.ex.
 
+; This IP number points back to a host that does not exist
+
+80.99.99    PTR    nonexist.test.ex.
+
 ; This is a duff registration for testing
 
 255.255.255 PTR .
 ; This is a duff registration for testing
 
 255.255.255 PTR .