mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 15:34:35 +00:00
abf531caa0
Instead of clearing the SI_FL_WAIT_ROOM flag and losing the information about the need from the producer to be woken up, we now call si_chk_rcv() immediately. This is cheap to do and it could possibly be further improved by only doing it when SI_FL_WAIT_ROOM was still set, though this will require some extra auditing of the code paths. The only remaining place where the flag was cleared without a call to si_chk_rcv() is si_alloc_ibuf(), but since this one is called from a receive path woken up from si_chk_rcv() or not having failed, the clearing was not necessary anymore either. And there was one place in stream_int_notify() where si_chk_rcv() was called with SI_FL_WAIT_ROOM still explicitly set so this place was adjusted in order to clear the flag prior to calling si_chk_rcv(). Now we don't have any situation where we randomly clear SI_FL_WAIT_ROOM without trying to wake the other side up, nor where we call si_chk_rcv() with the flag set, so this flag should accurately represent a failed attempt at putting data into the buffer. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |