From 31ee07b15a645b31618bcaeab0ebee907a60fb70 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 1 Aug 2011 17:48:04 +0400 Subject: Fix dispatcher restoration (fix for controller's logic) --- src/buffer.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index bf357d949..666869d51 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -635,16 +635,21 @@ rspamd_dispatcher_sendfile (rspamd_io_dispatcher_t *d, gint fd, size_t len) void rspamd_dispatcher_pause (rspamd_io_dispatcher_t * d) { + debug_ip ("paused dispatcher"); event_del (d->ev); + d->is_restored = FALSE; } void rspamd_dispatcher_restore (rspamd_io_dispatcher_t * d) { - event_del (d->ev); - event_set (d->ev, d->fd, EV_READ | EV_WRITE, dispatcher_cb, d); - event_add (d->ev, d->tv); - d->is_restored = TRUE; + if (!d->is_restored) { + debug_ip ("restored dispatcher"); + event_del (d->ev); + event_set (d->ev, d->fd, EV_WRITE, dispatcher_cb, d); + event_add (d->ev, d->tv); + d->is_restored = TRUE; + } } #undef debug_ip -- cgit v1.2.3