mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-18 19:50:54 +00:00
999f643ed2
The function channel_recv_limit() relies on channel_reserved() which itself relies on channel_in_transit(). Individually they're OK but combined they're doing the wrong thing. The problem is that we refrain from filling buffers while to_forward is even much larger than the buffer because of a semantic issue along the call chain. This is particularly visible when offloading SSL on moderately large files (1 MB), though it is also visible on clear text. Twice the number of recv() calls are made compared to what is needed, and the typical performance drops by 15-20% in SSL in 1.6 and later, and no directly measurable drop in 1.5 except when using strace. There's no need for all these intermediate functions, so let's get rid of them and reimplement channel_recv_limit() from scratch in a safer way. This fix needs to be backported to 1.6 and 1.5 (at least). Note that in 1.5 the function is called buffer_recv_limit() and it may differ a bit. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |