]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
*-login: Move code to login_anvil_init()
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 5 Apr 2017 09:36:32 +0000 (12:36 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 10 Apr 2017 07:31:30 +0000 (10:31 +0300)
Calling this allows plugins that need to talk to anvil make sure they have
an anvil connection even if mail_max_userip_connections=0.

src/login-common/login-common.h
src/login-common/main.c

index b9f877a6eb877e635f45eb9ecc9527b4b639bc97..f31df4f35d4c13238bddf88ad5d087c4b2bbf52b 100644 (file)
@@ -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[]);
 
index a086b44ee006d85d5cc19ee768c1dc9bfebf8543..9fb3c27f8c16185ab819d466a807424f9036d436 100644 (file)
@@ -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 */