From: Vsevolod Stakhov Date: Mon, 16 Mar 2020 11:32:49 +0000 (+0000) Subject: [Minor] Try to fix brain damaged libev timers X-Git-Tag: 2.5~58 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a14f2804072416d77a8e2ad44292ceb41b81966a;p=thirdparty%2Frspamd.git [Minor] Try to fix brain damaged libev timers --- diff --git a/src/libserver/fuzzy_backend/fuzzy_backend_redis.c b/src/libserver/fuzzy_backend/fuzzy_backend_redis.c index 32f03cfe2a..3574a63bf7 100644 --- a/src/libserver/fuzzy_backend/fuzzy_backend_redis.c +++ b/src/libserver/fuzzy_backend/fuzzy_backend_redis.c @@ -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); diff --git a/src/lua/lua_redis.c b/src/lua/lua_redis.c index 24d30964fd..f9dbbdd133 100644 --- a/src/lua/lua_redis.c +++ b/src/lua/lua_redis.c @@ -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;