dovecot-2.2: lib-storage: Create ioloop context for users even i...

dovecot at dovecot.org dovecot at dovecot.org
Wed Nov 18 16:11:12 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/910656f4b7a0
changeset: 19393:910656f4b7a0
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Nov 18 18:10:46 2015 +0200
description:
lib-storage: Create ioloop context for users even if log prefix changing is disabled.
This fixes stats plugin to work with lmtp, imap-urlauth and doveadm-server.

diffstat:

 src/lib-storage/mail-storage-service.c |  17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)

diffs (41 lines):

diff -r 52cbfa793147 -r 910656f4b7a0 src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c	Wed Nov 18 17:45:35 2015 +0200
+++ b/src/lib-storage/mail-storage-service.c	Wed Nov 18 18:10:46 2015 +0200
@@ -779,7 +779,6 @@
 
 	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 @@
 		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 @@
 	*_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);


More information about the dovecot-cvs mailing list