]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Try to fix brain damaged libev timers
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 16 Mar 2020 11:32:49 +0000 (11:32 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 16 Mar 2020 11:32:49 +0000 (11:32 +0000)
src/libserver/fuzzy_backend/fuzzy_backend_redis.c
src/lua/lua_redis.c

index 32f03cfe2a636b8b8b48817a73c0c40edc04330a..3574a63bf73f41376f47370d0419a511bf06af23 100644 (file)
@@ -420,6 +420,7 @@ rspamd_fuzzy_redis_shingles_callback (redisAsyncContext *c, gpointer r,
                                        else {
                                                /* Add timeout */
                                                session->timeout.data = session;
+                                               ev_now_update_if_cheap ((struct ev_loop *)session->event_loop);
                                                ev_timer_init (&session->timeout,
                                                                rspamd_fuzzy_redis_timeout,
                                                                session->backend->timeout, 0.0);
@@ -500,6 +501,7 @@ rspamd_fuzzy_backend_check_shingles (struct rspamd_fuzzy_redis_session *session)
        else {
                /* Add timeout */
                session->timeout.data = session;
+               ev_now_update_if_cheap ((struct ev_loop *)session->event_loop);
                ev_timer_init (&session->timeout,
                                rspamd_fuzzy_redis_timeout,
                                session->backend->timeout, 0.0);
@@ -677,6 +679,7 @@ rspamd_fuzzy_backend_check_redis (struct rspamd_fuzzy_backend *bk,
                else {
                        /* Add timeout */
                        session->timeout.data = session;
+                       ev_now_update_if_cheap ((struct ev_loop *)session->event_loop);
                        ev_timer_init (&session->timeout,
                                        rspamd_fuzzy_redis_timeout,
                                        session->backend->timeout, 0.0);
@@ -802,6 +805,7 @@ rspamd_fuzzy_backend_count_redis (struct rspamd_fuzzy_backend *bk,
                else {
                        /* Add timeout */
                        session->timeout.data = session;
+                       ev_now_update_if_cheap ((struct ev_loop *)session->event_loop);
                        ev_timer_init (&session->timeout,
                                        rspamd_fuzzy_redis_timeout,
                                        session->backend->timeout, 0.0);
@@ -928,6 +932,7 @@ rspamd_fuzzy_backend_version_redis (struct rspamd_fuzzy_backend *bk,
                else {
                        /* Add timeout */
                        session->timeout.data = session;
+                       ev_now_update_if_cheap ((struct ev_loop *)session->event_loop);
                        ev_timer_init (&session->timeout,
                                        rspamd_fuzzy_redis_timeout,
                                        session->backend->timeout, 0.0);
@@ -1554,6 +1559,7 @@ rspamd_fuzzy_backend_update_redis (struct rspamd_fuzzy_backend *bk,
                else {
                        /* Add timeout */
                        session->timeout.data = session;
+                       ev_now_update_if_cheap ((struct ev_loop *)session->event_loop);
                        ev_timer_init (&session->timeout,
                                        rspamd_fuzzy_redis_timeout,
                                        session->backend->timeout, 0.0);
index 24d30964fd53093bdea0a697a1d6c109b5a67385..f9dbbdd1333e654b8d8be3ef396a87557767eeb7 100644 (file)
@@ -1126,6 +1126,7 @@ lua_redis_make_request (lua_State *L)
                        REDIS_RETAIN (ctx); /* Cleared by fin event */
                        ctx->cmds_pending ++;
                        sp_ud->timeout_ev.data = sp_ud;
+                       ev_now_update_if_cheap ((struct ev_loop *)ud->event_loop);
                        ev_timer_init (&sp_ud->timeout_ev, lua_redis_timeout, timeout, 0.0);
                        ev_timer_start (ud->event_loop, &sp_ud->timeout_ev);
                        ret = TRUE;