]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix timeouts mess
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 21 Jun 2019 13:11:33 +0000 (14:11 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 22 Jun 2019 09:57:29 +0000 (10:57 +0100)
src/libserver/protocol.c
src/libutil/libev_helper.c

index c75a402a475f449f5e7d2699e870bce0ddccf95a..4f854328f7867ed326fa3c356fcc317fadd42d6c 100644 (file)
@@ -1786,6 +1786,7 @@ rspamd_protocol_write_reply (struct rspamd_task *task, ev_tstamp timeout)
                msg->flags |= RSPAMD_HTTP_FLAG_SPAMC;
        }
 
+       ev_now_update (task->event_loop);
        msg->date = ev_time ();
 
        msg_debug_protocol ("writing reply to client");
index ac0f1fc0d5008251cfcd52f5f4ee5d56015e6dbc..45e118e288883a5667f1929d4d3503c6bd436f94 100644 (file)
@@ -38,8 +38,8 @@ rspamd_ev_watcher_timer_cb (EV_P_ struct ev_timer *w, int revents)
        }
        else {
                /* Start another cycle as there was some activity */
-               ev_timer_set (w, after, 0.);
-               ev_timer_start (EV_A_ w);
+               w->repeat = after;
+               ev_timer_again (EV_A_ w);
        }
 }
 
@@ -101,4 +101,11 @@ rspamd_ev_watcher_reschedule (struct ev_loop *loop,
                ev_io_set (&ev->io, ev->io.fd, what);
                ev_io_start (EV_A_ &ev->io);
        }
+
+       if (!(ev_is_active (&ev->tm) || ev_is_pending (&ev->tm))) {
+               ev_timer_set (&ev->tm, ev->timeout, 0.0);
+               ev_timer_start (EV_A_ &ev->tm);
+       }
+
+       ev->last_activity = ev_now (EV_A);
 }
\ No newline at end of file