mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 13:51:26 +02:00
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.
This commit is contained in:
parent
829bd4710f
commit
3c5c066d66
@ -2629,7 +2629,7 @@ struct task *process_stream(struct task *t, void *context, unsigned short state)
|
|||||||
(si_b->flags & SI_FL_ERR && si_b->state != SI_ST_CLO))
|
(si_b->flags & SI_FL_ERR && si_b->state != SI_ST_CLO))
|
||||||
goto resync_stream_interface;
|
goto resync_stream_interface;
|
||||||
|
|
||||||
if (req->flags != rqf_last)
|
if ((req->flags & ~rqf_last) & CF_MASK_ANALYSER)
|
||||||
goto resync_request;
|
goto resync_request;
|
||||||
|
|
||||||
if ((res->flags ^ rpf_last) & CF_MASK_STATIC)
|
if ((res->flags ^ rpf_last) & CF_MASK_STATIC)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user