mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-02 17:41:47 +00:00
The trash buffer may now be smaller than a buffer because we can tune it at run time. This causes a risk when we're trying to use it as a temporary buffer to realign unaligned requests, because we may have to put up to a full buffer into it. Instead of doing a double copy, we're now relying on an open-coded bouncing copy algorithm. The principle is that we move one byte at a time to its final place, and if that place also holds a byte, then we move it too, and so on. We finish when we've moved all the buffer. It limits the number of memory accesses, but since it proceeds one byte at a time and with random walk, it's not cache friendly and should be slower than a double copy. However, it's only used in extreme situations and the difference will not be noticeable. It has been extensively tested and works reliably. |
||
---|---|---|
.. | ||
common | ||
import | ||
proto | ||
types |