From b37575ba0e7bcd1fe247529ea414a9dda93c50d8 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 14 Mar 2011 16:59:43 +0300 Subject: [PATCH] Race in fuzzy check. --- src/plugins/fuzzy_check.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c index a8090be88..f2b11c8f4 100644 --- a/src/plugins/fuzzy_check.c +++ b/src/plugins/fuzzy_check.c @@ -442,12 +442,6 @@ fuzzy_io_fin (void *ud) event_del (&session->ev); close (session->fd); - session->task->save.saved--; - if (session->task->save.saved == 0) { - /* Call other filters */ - session->task->save.saved = 1; - process_filters (session->task); - } } /* Call this whenever we got data from fuzzy storage */ @@ -521,6 +515,12 @@ fuzzy_io_callback (gint fd, short what, void *arg) ok: remove_normal_event (session->task->s, fuzzy_io_fin, session); + session->task->save.saved--; + if (session->task->save.saved == 0) { + /* Call other filters */ + session->task->save.saved = 1; + process_filters (session->task); + } } static void @@ -530,11 +530,6 @@ fuzzy_learn_fin (void *arg) event_del (&session->ev); close (session->fd); - (*session->saved)--; - if (*session->saved == 0) { - session->session->state = STATE_REPLY; - session->session->dispatcher->write_callback (session->session); - } } static void @@ -597,6 +592,12 @@ fuzzy_learn_callback (gint fd, short what, void *arg) } ok: remove_normal_event (session->session->s, fuzzy_learn_fin, session); + + (*session->saved)--; + if (*session->saved == 0) { + session->session->state = STATE_REPLY; + session->session->dispatcher->write_callback (session->session); + } } static inline void -- 2.39.5