dovecot-2.2: lib-auth: Previous changes didn't set the current i...

dovecot at dovecot.org dovecot at dovecot.org
Mon Aug 5 22:16:15 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/19719ea2cddb
changeset: 16656:19719ea2cddb
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Aug 05 22:15:08 2013 +0300
description:
lib-auth: Previous changes didn't set the current ioloop correctly, causing problems.

diffstat:

 src/lib-auth/auth-master.c |  6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diffs (39 lines):

diff -r 647ef2264398 -r 19719ea2cddb src/lib-auth/auth-master.c
--- a/src/lib-auth/auth-master.c	Mon Aug 05 22:13:28 2013 +0300
+++ b/src/lib-auth/auth-master.c	Mon Aug 05 22:15:08 2013 +0300
@@ -287,7 +287,9 @@
 
 	while ((line = i_stream_next_line(conn->input)) != NULL) {
 		T_BEGIN {
+			io_loop_set_current(conn->prev_ioloop);
 			ret = auth_handle_line(conn, line);
+			io_loop_set_current(conn->ioloop);
 		} T_END;
 		if (!ret)
 			return;
@@ -369,6 +371,7 @@
 		if (conn->prev_ioloop == NULL)
 			auth_connection_close(conn);
 		else {
+			i_assert(conn->to == NULL);
 			conn->to = timeout_add(1000*AUTH_MASTER_IDLE_SECS,
 					       auth_idle_timeout, conn);
 		}
@@ -682,6 +685,7 @@
 
 	if (auth_master_run_cmd_pre(conn, str_c(str)) < 0)
 		ctx->failed = TRUE;
+	io_loop_set_current(conn->prev_ioloop);
 	conn->prefix = DEFAULT_USERDB_LOOKUP_PREFIX;
 	return ctx;
 }
@@ -701,7 +705,9 @@
 		} T_END;
 	} else {
 		/* wait for more data */
+		io_loop_set_current(ctx->conn->ioloop);
 		io_loop_run(ctx->conn->ioloop);
+		io_loop_set_current(ctx->conn->prev_ioloop);
 	}
 
 	if (ctx->finished || ctx->failed)


More information about the dovecot-cvs mailing list