]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: stream: maintain consistence between channel_forward and HTTP forward
authorWilly Tarreau <w@1wt.eu>
Thu, 9 Jul 2015 16:38:57 +0000 (18:38 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 10 Jul 2015 09:37:29 +0000 (11:37 +0200)
commit42529c38ac8ffc98bf50322adc39b708795f5c30
tree596b2ef294f7cd4768faf157e9e8445f4ed25b4a
parent28d976d5eedab0c7aa9abb6e38501c2bf27578f6
MINOR: stream: maintain consistence between channel_forward and HTTP forward

When the HTTP forwarder is used, it resets msg->sov so that we know that
the parsing pointer has advanced by exactly (msg->eoh + msg->eol - msg->sov)
bytes which may have to be rewound in case we want to perform an HTTP fetch
after forwarding has started (eg: upon connect).

But when the backend is in TCP mode, there may be no HTTP forwarding
analyser installed, still we may want to perform these HTTP fetches in
case we have already ensured at the TCP layer that we have a properly
parsed HTTP transaction.

In order to solve this, we reset msg->sov before doing a channel_forward()
so that we can still compute http_rewind() on the pending data. That ensures
the buffer is always rewindable even in mixed TCP+HTTP mode.
src/stream.c