From: Christopher Faulet Date: Mon, 27 Feb 2023 15:21:00 +0000 (+0100) Subject: MEDIUM: stream: Eventually handle stream timeouts when exiting process_stream() X-Git-Tag: v2.8-dev5~92 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e758b5c703d9d18cf3cec83aec9d6cb36bead157;p=thirdparty%2Fhaproxy.git MEDIUM: stream: Eventually handle stream timeouts when exiting process_stream() When we exit from process_stream(), if the task is expired, we try to handle the stream timeouts and we resync the stream-connectors. This avoids a useless immediate wakeup. It is not really an issue, but it is a small improvement in edge cases. --- diff --git a/src/stream.c b/src/stream.c index a8a8816ae6..b2428e4a74 100644 --- a/src/stream.c +++ b/src/stream.c @@ -2539,6 +2539,13 @@ struct task *process_stream(struct task *t, void *context, unsigned int state) t->expire = tick_first(t->expire, s->conn_exp); + if (unlikely(tick_is_expired(t->expire, now_ms))) { + /* Some events prevented the timeouts to be handled but nothing evolved. + So do it now and resyunc the stconns + */ + stream_handle_timeouts(s); + goto resync_stconns; + } s->pending_events &= ~(TASK_WOKEN_TIMER | TASK_WOKEN_RES); stream_release_buffers(s);