]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Create ioloop context for users even if log prefix changing is disabled.
authorTimo Sirainen <tss@iki.fi>
Wed, 18 Nov 2015 16:10:46 +0000 (18:10 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 18 Nov 2015 16:10:46 +0000 (18:10 +0200)
This fixes stats plugin to work with lmtp, imap-urlauth and doveadm-server.

src/lib-storage/mail-storage-service.c

index d01a62e995232dbc0daaa32c99363c0f757a361c..65d2c75ff89913b12695a8e1c2f3114220a79cd9 100644 (file)
@@ -779,7 +779,6 @@ mail_storage_service_init_log(struct mail_storage_service_ctx *ctx,
 
        if (master_service_get_client_limit(master_service) == 1)
                i_set_failure_send_prefix(user->log_prefix);
-       user->ioloop_ctx = io_loop_context_new(current_ioloop);
        io_loop_context_add_callbacks(user->ioloop_ctx,
                                      mail_storage_service_io_activate_user,
                                      mail_storage_service_io_deactivate_user,
@@ -1342,6 +1341,10 @@ mail_storage_service_next_real(struct mail_storage_service_ctx *ctx,
                set_keyval(ctx, user, "mail_home", priv.home);
        }
 
+       /* create ioloop context regardless of logging. it's also used by
+          stats plugin. */
+       user->ioloop_ctx = io_loop_context_new(current_ioloop);
+
        if ((user->flags & MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT) == 0)
                mail_storage_service_init_log(ctx, user, &priv);
 
@@ -1430,11 +1433,13 @@ void mail_storage_service_user_free(struct mail_storage_service_user **_user)
        *_user = NULL;
 
        if (user->ioloop_ctx != NULL) {
-               io_loop_context_remove_callbacks(user->ioloop_ctx,
-                       mail_storage_service_io_activate_user,
-                       mail_storage_service_io_deactivate_user, user);
-               if (io_loop_get_current_context(current_ioloop) == user->ioloop_ctx)
-                       mail_storage_service_io_deactivate_user(user);
+               if ((user->flags & MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT) == 0) {
+                       io_loop_context_remove_callbacks(user->ioloop_ctx,
+                               mail_storage_service_io_activate_user,
+                               mail_storage_service_io_deactivate_user, user);
+                       if (io_loop_get_current_context(current_ioloop) == user->ioloop_ctx)
+                               mail_storage_service_io_deactivate_user(user);
+               }
                io_loop_context_unref(&user->ioloop_ctx);
        }
        settings_parser_deinit(&user->set_parser);