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 a8a8816..b2428e4 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -2539,6 +2539,13 @@
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);