From: Timo Sirainen Date: Mon, 5 Aug 2013 19:15:08 +0000 (+0300) Subject: lib-auth: Previous changes didn't set the current ioloop correctly, causing problems. X-Git-Tag: 2.2.5~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=769dea751e901be63c3ce4303d0b1afbf47d9d44;p=thirdparty%2Fdovecot%2Fcore.git lib-auth: Previous changes didn't set the current ioloop correctly, causing problems. --- diff --git a/src/lib-auth/auth-master.c b/src/lib-auth/auth-master.c index a6cae0c94f..3a7d357421 100644 --- a/src/lib-auth/auth-master.c +++ b/src/lib-auth/auth-master.c @@ -287,7 +287,9 @@ static void auth_input(struct auth_master_connection *conn) 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 @@ static void auth_master_unset_io(struct auth_master_connection *conn) 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 @@ auth_master_user_list_init(struct auth_master_connection *conn, 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 @@ const char *auth_master_user_list_next(struct auth_master_user_list_ctx *ctx) } 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)