]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: Reorder initialization code
authorAki Tuomi <aki.tuomi@dovecot.fi>
Thu, 23 Aug 2018 17:29:58 +0000 (20:29 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 25 Sep 2018 10:29:09 +0000 (13:29 +0300)
login_set socket paths get invalidated when
master_service_init_finish is called, so we need
to run the code that uses them before this.

src/submission/main.c

index 737ef32184e056dd4b43463ec3bdad45b2b8c8c2..6b7b8392ac43f3aa97c7ee27993f793216267c0a 100644 (file)
@@ -341,7 +341,6 @@ int main(int argc, char *argv[])
        login_set.callback = login_client_connected;
        login_set.failure_callback = login_client_failed;
 
-       master_service_init_finish(master_service);
        master_service_set_die_callback(master_service, submission_die);
 
        storage_service =
@@ -363,6 +362,13 @@ int main(int argc, char *argv[])
        smtp_client_set.debug = submission_debug;
        smtp_client = smtp_client_init(&smtp_client_set);
 
+       if (!IS_STANDALONE())
+               master_login = master_login_init(master_service, &login_set);
+
+       master_service_init_finish(master_service);
+       /* NOTE: login_set.*_socket_path are now invalid due to data stack
+          having been freed */
+
        /* fake that we're running, so we know if client was destroyed
           while handling its initial input */
        io_loop_set_running(current_ioloop);
@@ -372,7 +378,6 @@ int main(int argc, char *argv[])
                        main_stdio_run(username);
                } T_END;
        } else {
-               master_login = master_login_init(master_service, &login_set);
                io_loop_set_running(current_ioloop);
        }