diff options
author | Jeremy Harris <jgh146exb@wizmail.org> | 2021-05-15 15:41:43 +0100 |
---|---|---|
committer | Jeremy Harris <jgh146exb@wizmail.org> | 2021-06-28 00:30:02 +0100 |
commit | c314dfcd9e33e02f409d86d06045cb6053fe4140 (patch) | |
tree | 60b12ef843d39c9098f3a3d7eef71f4fbb5016de | |
parent | ba0919f4ecac24b94a452d46b7d5dd6c9454e7e8 (diff) |
smtp tpt fallback_hosts list must be mutable
-rw-r--r-- | src/src/readconf.c | 29 | ||||
-rw-r--r-- | 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 c8f25aaaf..5d14be811 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 e2b2250ad..dfb4a9284 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; } |