Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5939:8f1d94246a8f HEAD
Delay initializing ioloop backend until it's needed.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 09 Jul 2007 07:04:51 +0300 |
parents | 805f2527a982 |
children | b985e2127a2d |
files | src/lib/ioloop.c |
diffstat | 1 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/ioloop.c Mon Jul 09 07:01:08 2007 +0300 +++ b/src/lib/ioloop.c Mon Jul 09 07:04:51 2007 +0300 @@ -36,6 +36,8 @@ io->refcount = 1; io->fd = fd; + if (current_ioloop->handler_context == NULL) + io_loop_handler_init(current_ioloop); io_loop_handle_add(current_ioloop, io); if (current_ioloop->io_files != NULL) { @@ -293,7 +295,10 @@ void io_loop_run(struct ioloop *ioloop) { - ioloop->running = TRUE; + if (ioloop->handler_context == NULL) + io_loop_handler_init(ioloop); + + ioloop->running = TRUE; while (ioloop->running) io_loop_handler_run(ioloop); } @@ -323,7 +328,6 @@ ioloop_time = ioloop_timeval.tv_sec; ioloop = i_new(struct ioloop, 1); - io_loop_handler_init(ioloop); ioloop->prev = current_ioloop; current_ioloop = ioloop; @@ -357,7 +361,8 @@ i_free(to); } - io_loop_handler_deinit(ioloop); + if (current_ioloop->handler_context != NULL) + io_loop_handler_deinit(ioloop); /* ->prev won't work unless loops are destroyed in create order */ i_assert(ioloop == current_ioloop);