Mercurial > dovecot > core-2.2
changeset 12393:57477db05aff
lib-auth: Less leaky fix to previous auth_master_*() bugfix.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 05 Nov 2010 12:24:01 +0000 |
parents | 55d144a33e62 |
children | 7f8f73bed7f9 |
files | src/lib-auth/auth-master.c |
diffstat | 1 files changed, 11 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-auth/auth-master.c Fri Nov 05 12:15:53 2010 +0000 +++ b/src/lib-auth/auth-master.c Fri Nov 05 12:24:01 2010 +0000 @@ -309,8 +309,10 @@ static void auth_master_unset_io(struct auth_master_connection *conn, struct ioloop *prev_ioloop) { - io_loop_set_current(prev_ioloop); - lib_signals_reset_ioloop(); + if (prev_ioloop != NULL) { + io_loop_set_current(prev_ioloop); + lib_signals_reset_ioloop(); + } io_loop_set_current(conn->ioloop); timeout_remove(&conn->to); @@ -320,8 +322,12 @@ io_loop_destroy(&conn->ioloop); if ((conn->flags & AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT) == 0) { - conn->to = timeout_add(1000*AUTH_MASTER_IDLE_SECS, - auth_idle_timeout, conn); + if (prev_ioloop == NULL) + auth_connection_close(conn); + else { + conn->to = timeout_add(1000*AUTH_MASTER_IDLE_SECS, + auth_idle_timeout, conn); + } } } @@ -370,8 +376,7 @@ io_loop_run(conn->ioloop); } - if (prev_ioloop != NULL) - auth_master_unset_io(conn, prev_ioloop); + auth_master_unset_io(conn, prev_ioloop); if (conn->aborted) { conn->aborted = FALSE; auth_connection_close(conn);