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;
}