MEDIUM: stream: only loop on flags relevant to the analysers
In process_stream() we detect a number of conditions to decide to loop
back to the analysers. Some of them are excessive in that they perform
a strict comparison instead of filtering on the flags relevant to the
analysers as is done at other places, resulting in excess wakeups. One
of the effect is that after a successful WRITE_PARTIAL, a second send is
not possible, resulting in the loss of WRITE_PARTIAL, causing another
wakeup! Let's apply the same mask and verify the flags correctly.
diff --git a/src/stream.c b/src/stream.c
index f92a008..860f2fd 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -2629,7 +2629,7 @@
(si_b->flags & SI_FL_ERR && si_b->state != SI_ST_CLO))
goto resync_stream_interface;
- if (req->flags != rqf_last)
+ if ((req->flags & ~rqf_last) & CF_MASK_ANALYSER)
goto resync_request;
if ((res->flags ^ rpf_last) & CF_MASK_STATIC)