Fix "-bP smtp_receive_timeout". Bug 2384
authorJeremy Harris <jgh146exb@wizmail.org>
Fri, 22 Mar 2019 15:00:23 +0000 (15:00 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 22 Mar 2019 15:02:44 +0000 (15:02 +0000)
doc/doc-txt/ChangeLog
src/src/readconf.c

index fa8f467e6f10c423dfc62b5e70242cfcc8419090..6217a4d0c3014064c331b6bd6447b58d236683ad 100644 (file)
@@ -52,6 +52,9 @@ JH/11 Harden plaintext authenticator against a badly misconfigured client-send
       string.  Previously it was possible to cause undefined behaviour in a
       library routine (usually a crash).  Found by "zerons".
 
       string.  Previously it was possible to cause undefined behaviour in a
       library routine (usually a crash).  Found by "zerons".
 
+JH/12 Bug 2384: fix "-bP smtp_receive_timeout".  Previously it returned no
+      output.
+
 
 Exim version 4.92
 -----------------
 
 Exim version 4.92
 -----------------
index 71cdae899807aaaf7312e042b838831218c85048..150d7973d3ffd706374093e6d86041e8af1f6fb1 100644 (file)
@@ -19,7 +19,7 @@ implementation of the conditional .ifdef etc. */
 
 
 static uschar * syslog_facility_str;
 
 
 static uschar * syslog_facility_str;
-static void fn_smtp_receive_timeout(const uschar *, const uschar *);
+static void fn_smtp_receive_timeout(const uschar *, const uschar *, unsigned);
 
 /*************************************************
 *           Main configuration options           *
 
 /*************************************************
 *           Main configuration options           *
@@ -389,7 +389,8 @@ static int optionlist_config_size = nelem(optionlist_config);
 
 #ifdef MACRO_PREDEF
 
 
 #ifdef MACRO_PREDEF
 
-static void fn_smtp_receive_timeout(const uschar * name, const uschar * str) {/*Dummy*/}
+static void
+fn_smtp_receive_timeout(const uschar * name, const uschar * str, unsigned flags) {/*Dummy*/}
 
 void
 options_main(void)
 
 void
 options_main(void)
@@ -554,6 +555,8 @@ static syslog_fac_item syslog_list[] = {
 static int syslog_list_size = sizeof(syslog_list)/sizeof(syslog_fac_item);
 
 
 static int syslog_list_size = sizeof(syslog_list)/sizeof(syslog_fac_item);
 
 
+#define opt_fn_print           BIT(0)
+#define opt_fn_print_label     BIT(1)
 
 
 /*************************************************
 
 
 /*************************************************
@@ -1522,9 +1525,16 @@ return yield;
 *            Custom-handler options              *
 *************************************************/
 static void
 *            Custom-handler options              *
 *************************************************/
 static void
-fn_smtp_receive_timeout(const uschar * name, const uschar * str)
+fn_smtp_receive_timeout(const uschar * name, const uschar * str, unsigned flags)
 {
 {
-if (*str == '$')
+if (flags & opt_fn_print)
+  {
+  if (flags & opt_fn_print_label) printf("%s = ", name);
+  printf("%s\n", smtp_receive_timeout_s
+    ? string_printing2(smtp_receive_timeout_s, FALSE)
+    : readconf_printtime(smtp_receive_timeout));
+  }
+else if (*str == '$')
   smtp_receive_timeout_s = string_copy(str);
 else
   {
   smtp_receive_timeout_s = string_copy(str);
 else
   {
@@ -2318,7 +2328,7 @@ switch (type)
   case opt_func:
     {
     void (*fn)() = ol->value;
   case opt_func:
     {
     void (*fn)() = ol->value;
-    fn(name, s);
+    fn(name, s, 0);
     break;
     }
   }
     break;
     }
   }
@@ -2657,6 +2667,13 @@ switch(ol->type & opt_mask)
   case opt_bool_set:
     printf("%s%s\n", (*((BOOL *)value))? "" : "no_", name);
     break;
   case opt_bool_set:
     printf("%s%s\n", (*((BOOL *)value))? "" : "no_", name);
     break;
+
+  case opt_func:
+    {
+    void (*fn)() = ol->value;
+    fn(name, NULL, no_labels ? opt_fn_print : opt_fn_print|opt_fn_print_label);
+    break;
+    }
   }
 return TRUE;
 }
   }
 return TRUE;
 }