]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Another try to fix slow callbacks and timers
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 31 Oct 2019 12:30:49 +0000 (12:30 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 31 Oct 2019 12:30:49 +0000 (12:30 +0000)
src/libutil/libev_helper.c
src/lua/lua_http.c

index 65a53d3f773d34fe39ba0233fcabca5859ee2f1a..41195bfa674562b4afa007676c1f702a99453a30 100644 (file)
@@ -70,6 +70,9 @@ rspamd_ev_watcher_start (struct ev_loop *loop,
        ev_io_start (EV_A_ &ev->io);
 
        if (timeout > 0) {
+               /* Update timestamp to avoid timers running early */
+               ev_now_update (loop);
+
                ev->timeout = timeout;
                ev_timer_set (&ev->tm, timeout, 0.0);
                ev_timer_start (EV_A_ &ev->tm);
@@ -109,6 +112,9 @@ rspamd_ev_watcher_reschedule (struct ev_loop *loop,
 
        if (ev->timeout > 0) {
                if (!(ev_can_stop (&ev->tm))) {
+                       /* Update timestamp to avoid timers running early */
+                       ev_now_update (loop);
+
                        ev->tm.data = ev;
                        ev_timer_init (&ev->tm, rspamd_ev_watcher_timer_cb, ev->timeout, 0.0);
                        ev_timer_start (EV_A_ &ev->tm);
index 76c0c9055483061dfbe3a11b0fc699319ace2e64..9a3238364d9fb3048ac776ed3a66b2f0149456c8 100644 (file)
@@ -391,9 +391,6 @@ lua_http_make_connection (struct lua_http_cbdata *cbd)
 
        if (cbd->flags & RSPAMD_LUA_HTTP_FLAG_KEEP_ALIVE) {
                cbd->fd = -1; /* FD is owned by keepalive connection */
-
-               /* Update timestamp to make a more precise timers */
-               ev_now_update (cbd->event_loop);
                cbd->conn = rspamd_http_connection_new_keepalive (
                                NULL, /* Default context */
                                NULL,