]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG: stream_interface: Reuse connection even if the output channel is empty
authorChristopher Faulet <cfaulet@qualys.com>
Wed, 23 Dec 2015 08:33:35 +0000 (09:33 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 3 Feb 2016 13:22:55 +0000 (14:22 +0100)
commitc34d19fc3c2c393e3d7bc80753b338def05a1bca
tree0ec2d7ab0544f1359938a9c040ca1e1ffc56a0ef
parentfdfcc9d2b75e97f81b40f80ddd341ab77550f43b
BUG: stream_interface: Reuse connection even if the output channel is empty

in function 'si_connect', an existing connection is reused (and considered as
established) only when there are some pending data in the output channel.

This can be problem when filters are used, because a filter can choose to not
forward data immediatly. So when we try to initiate a connection to a server,
the output channel can be empty. In this situation, if the connection already
exists, it is not considered as established and nothing happens. If the stream
interface is in the state SI_ST_ASS, this leads to an infinite loop in
process_stream because it remains in this state.

This patch fixes this problem. Now, in 'si_connect', we always reuse an existing
connection, whether or not there are pending data in the output channel.
include/proto/stream_interface.h