haproxy/include/proto
Willy Tarreau cd485c4480 [BUG] do not dequeue the backend's pending connections on a dead server
Kai Krueger found that previous patch was incomplete, because there is
an unconditionnal call to process_srv_queue() in session_free() which
still causes a dead server to consume pending connections from the
backend.

This call was made unconditionnal so that we don't leave unserved
connections in the server queue, for instance connections coming
in with "option persist" which can bypass the server status check.
However, the server must not touch the backend's queue if it is down.

Another fear was that some connections might remain unserved when
the server is using a dynamic maxconn if the number of connections
to the backend is too low. Right now, srv_dynamic_maxconn() ensures
this cannot happen, so the call can remain conditionnal.

The fix consists in allowing a server to process it own queue whatever
its state, but not to touch the backend's queue if it is down. Its
queue should normally be empty when the server is down because it is
redistributed when the server goes down. The only remaining cases are
precisely the persistent connections with "option persist" set, coming
in after the queue has been redispatched. Those ones must still be
processed when a connection terminates.
2008-12-04 09:33:58 +01:00
..
acl.h [MEDIUM] acl: added the TRUE and FALSE ACLs. 2007-06-17 20:40:25 +02:00
backend.h [MAJOR] implementation of the "leastconn" load balancing algorithm 2008-03-10 22:04:30 +01:00
buffers.h [BUG] do not re-arm read timeout after writing data 2007-06-03 16:03:49 +02:00
checks.h [MEDIUM] Spread health checks even more 2007-10-15 09:33:10 +02:00
client.h [MEDIUM] store the original destination address in the session 2007-05-08 23:24:20 +02:00
cttproxy.h [MEDIUM] check for cttproxy support when required 2007-03-24 17:24:39 +01:00
dumpstats.h [MEDIUM] fix stats socket limitation to 16 kB 2008-03-17 22:08:01 +01:00
fd.h [BUG] fix truncated responses with sepoll 2008-01-18 17:20:13 +01:00
hdr_idx.h [MAJOR] huge rework of the HTTP request FSM 2007-01-21 19:16:41 +01:00
httperr.h [MEDIUM] errorloc now checked first from backend then from frontend 2006-12-24 17:47:20 +01:00
log.h [MAJOR] ported requri to use mempools v2 2007-05-13 21:36:56 +02:00
proto_http.h [MAJOR] implement parameter hashing for POST requests 2008-04-15 15:30:41 +02:00
proto_tcp.h [MEDIUM] fix server health checks source address selection 2008-01-13 18:40:14 +01:00
proto_uxst.h [MINOR] add a generic delete_listener() primitive 2007-11-04 22:42:49 +01:00
protocols.h [MINOR] add a generic unbind_all_listeners() primitive 2007-11-04 22:42:49 +01:00
proxy.h [BUG] ensure that listeners from disabled proxies are correctly unbound. 2008-10-12 12:07:48 +02:00
queue.h [BUG] do not dequeue the backend's pending connections on a dead server 2008-12-04 09:33:58 +01:00
senddata.h [MEDIUM] moved stats and buffer generic functions to new files 2007-10-18 14:12:21 +02:00
server.h [MEDIUM]: rework checks handling 2008-01-22 11:29:06 +01:00
session.h [BUG] fix the dequeuing logic to ensure that all requests get served 2008-06-20 15:22:51 +02:00
stream_sock.h [MEDIUM] got rid of event_{cli,srv}_write() in favor of stream_sock_write() 2006-07-29 19:01:31 +02:00
task.h [OPTIM] GCC4's builtin_expect() is suboptimal 2008-02-14 23:14:33 +01:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00