From: Timo Sirainen Date: Wed, 5 Apr 2017 09:36:32 +0000 (+0300) Subject: *-login: Move code to login_anvil_init() X-Git-Tag: 2.3.0.rc1~1763 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a87eeb418cb3776380a1e1ffa8a9127e2b181ff0;p=thirdparty%2Fdovecot%2Fcore.git *-login: Move code to login_anvil_init() Calling this allows plugins that need to talk to anvil make sure they have an anvil connection even if mail_max_userip_connections=0. --- diff --git a/src/login-common/login-common.h b/src/login-common/login-common.h index b9f877a6eb..f31df4f35d 100644 --- a/src/login-common/login-common.h +++ b/src/login-common/login-common.h @@ -64,6 +64,9 @@ extern unsigned int login_source_ips_idx, login_source_ips_count; void login_refresh_proctitle(void); void login_client_destroyed(void); +/* Call to guarantee that the "anvil" global variable is initialized. */ +void login_anvil_init(void); + int login_binary_run(const struct login_binary *binary, int argc, char *argv[]); diff --git a/src/login-common/main.c b/src/login-common/main.c index a086b44ee0..9fb3c27f8c 100644 --- a/src/login-common/main.c +++ b/src/login-common/main.c @@ -273,6 +273,16 @@ static bool anvil_reconnect_callback(void) return FALSE; } +void login_anvil_init(void) +{ + if (anvil != NULL) + return; + + anvil = anvil_client_init("anvil", anvil_reconnect_callback, 0); + if (anvil_client_connect(anvil, TRUE) < 0) + i_fatal("Couldn't connect to anvil"); +} + static const struct ip_addr * parse_login_source_ips(const char *ips_str, unsigned int *count_r) { @@ -360,11 +370,8 @@ static void main_preinit(void) i_assert(strcmp(global_ssl_settings->ssl, "no") == 0 || ssl_initialized); - if (global_login_settings->mail_max_userip_connections > 0) { - anvil = anvil_client_init("anvil", anvil_reconnect_callback, 0); - if (anvil_client_connect(anvil, TRUE) < 0) - i_fatal("Couldn't connect to anvil"); - } + if (global_login_settings->mail_max_userip_connections > 0) + login_anvil_init(); /* read the login_source_ips before chrooting so it can access /etc/hosts */