Produce a more useful error message if an SMTP transport's hosts
authorTony Finch <dot@dot.at>
Fri, 5 Sep 2008 16:59:47 +0000 (16:59 +0000)
committerTony Finch <dot@dot.at>
Fri, 5 Sep 2008 16:59:47 +0000 (16:59 +0000)
setting expands to an empty string.
Bug reported by Jens Hoffrichter <jens.hoffrichter@gmail.com>

doc/doc-txt/ChangeLog
src/src/transports/smtp.c

index f6a992246798567c1780fa922c5e601809f0a788..c6fd500ec802a4be2f7392326332b72443b7ff22 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.552 2008/09/03 18:53:29 fanf2 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.553 2008/09/05 16:59:47 fanf2 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -65,6 +65,9 @@ TF/07 Fix the way ${extract is skipped in the untaken branch of a conditional.
 TF/08 TLS error reporting now respects the incoming_interface and
       incoming_port log selectors.
 
+TF/09 Produce a more useful error message if an SMTP transport's hosts
+      setting expands to an empty string.
+
 
 Exim version 4.69
 -----------------
index 4e1f3c45b76e4de3e90d913db8f8c72a43f9859a..e8354ad7a449b1f88c6f1a945fcccf3abcced536 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/transports/smtp.c,v 1.39 2008/03/05 21:13:23 tom Exp $ */
+/* $Cambridge: exim/src/src/transports/smtp.c,v 1.40 2008/09/05 16:59:48 fanf2 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -2264,6 +2264,15 @@ if (hostlist == NULL || (ob->hosts_override && ob->hosts != NULL))
 
     host_build_hostlist(&hostlist, s, ob->hosts_randomize);
 
+    /* Check that the expansion yielded something useful. */
+    if (hostlist == NULL)
+      {
+      addrlist->message =
+        string_sprintf("%s transport has empty hosts setting", tblock->name);
+      addrlist->transport_return = PANIC;
+      return FALSE;   /* Only top address has status */
+      }
+
     /* If there was no expansion of hosts, save the host list for
     next time. */