[exim-cvs] smtp tpt fallback_hosts list must be mutable

トップ ページ
このメッセージを削除
このメッセージに返信
著者: Exim Git Commits Mailing List
日付:  
To: exim-cvs
題目: [exim-cvs] smtp tpt fallback_hosts list must be mutable
Gitweb: https://git.exim.org/exim.git/commitdiff/c314dfcd9e33e02f409d86d06045cb6053fe4140
Commit:     c314dfcd9e33e02f409d86d06045cb6053fe4140
Parent:     ba0919f4ecac24b94a452d46b7d5dd6c9454e7e8
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Sat May 15 15:41:43 2021 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Mon Jun 28 00:30:02 2021 +0100


    smtp tpt fallback_hosts list must be mutable
---
 src/src/readconf.c        | 29 +++++++++++++----------------
 src/src/transports/smtp.c |  5 ++++-
 2 files changed, 17 insertions(+), 17 deletions(-)


diff --git a/src/src/readconf.c b/src/src/readconf.c
index c8f25aa..5d14be8 100644
--- a/src/src/readconf.c
+++ b/src/src/readconf.c
@@ -3673,6 +3673,16 @@ return NULL; /* never obeyed */



+static void
+driver_init_fini(driver_instance * d, const uschar * class)
+{
+if (!d->driver_name)
+  log_write(0, LOG_PANIC_DIE|LOG_CONFIG,
+    "no driver defined for %s \"%s\"", class, d->name);
+(d->info->init)(d);
+}
+
+
 /*************************************************
 *             Initialize driver list             *
 *************************************************/
@@ -3733,11 +3743,8 @@ while ((buffer = get_config_line()))
     {
     if (d)
       {
-      if (!d->driver_name)
-        log_write(0, LOG_PANIC_DIE|LOG_CONFIG,
-          "no driver defined for %s \"%s\"", class, d->name);
       /* s is using big_buffer, so this call had better not */
-      (d->info->init)(d);
+      driver_init_fini(d, class);
       d = NULL;
       }
     if (!macro_read_assignment(buffer)) exim_exit(EXIT_FAILURE);
@@ -3753,12 +3760,7 @@ while ((buffer = get_config_line()))
     /* Finish off initializing the previous driver. */


     if (d)
-      {
-      if (!d->driver_name)
-        log_write(0, LOG_PANIC_DIE|LOG_CONFIG,
-          "no driver defined for %s \"%s\"", class, d->name);
-      (d->info->init)(d);
-      }
+      driver_init_fini(d, class);


     /* Check that we haven't already got a driver of this name */


@@ -3822,12 +3824,7 @@ while ((buffer = get_config_line()))
/* Run the initialization function for the final driver. */

 if (d)
-  {
-  if (!d->driver_name)
-    log_write(0, LOG_PANIC_DIE|LOG_CONFIG,
-      "no driver defined for %s \"%s\"", class, d->name);
-  (d->info->init)(d);
-  }
+  driver_init_fini(d, class);
 }



diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c
index e2b2250..dfb4a92 100644
--- a/src/src/transports/smtp.c
+++ b/src/src/transports/smtp.c
@@ -355,6 +355,7 @@ void
smtp_transport_init(transport_instance *tblock)
{
smtp_transport_options_block *ob = SOB tblock->options_block;
+int old_pool = store_pool;

/* Retry_use_local_part defaults FALSE if unset */

@@ -390,7 +391,9 @@ if (ob->hosts_override && ob->hosts) tblock->overrides_hosts = TRUE;
/* If there are any fallback hosts listed, build a chain of host items
for them, but do not do any lookups at this time. */

-host_build_hostlist(&(ob->fallback_hostlist), ob->fallback_hosts, FALSE);
+store_pool = POOL_PERM;
+host_build_hostlist(&ob->fallback_hostlist, ob->fallback_hosts, FALSE);
+store_pool = old_pool;
}