Hi, Willy

I have noticed that "half-closed timeout" appears in ROADMAP file.
That't the issue I have tested several days ago.

I have done a test under such conditions:
1) block the response from server by iptables rules.
2) client closes connection after sending request to haproxy ASAP.

and enabled following options in haproxy:
        option http-server-close
        option http-pretend-keepalive

I want to test whether haproxy will close both frontend and backend
connections under the above conditions. No matter I closed connection
from client with FIN or RST packet, the backend connection will keep
established and not be closed until the related timeout expired. The
only difference is that the connection will disappear when closed with
RST but enter into CLOSE_WAIT status when closed with FIN. The latter
should be so called half closed.

After reviewing the codes and testing, it seems that haproxy will not
care about the events occur on front connection until it gets response
from the related backend connection. As a result, both FIN and RST
packets from client will be ignored. It should be harmful for servers to
keep a lot of established connections in this test condtion.

I am wondering that what I have analysed is correct or not. If correct,
it should be necessary to care about the events on frontend connection
even that haproxy has not got response from backend server.

-- 
Best Regards,
Godbach

Reply via email to