mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04: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 | ||