2011/04/20 - List of keep-alive / close options with associated behaviours. PK="http-pretend-keepalive", HC="httpclose", SC="http-server-close", 0 = option not set 1 = option is set * = option doesn't matter Options can be split between frontend and backend, so some of them might have a meaning only when combined by associating a frontend to a backend. Some forms are not the normal ones and provide a behaviour compatible with another normal form. Those are considered alternate forms and are marked "(alt)". SC HC PK Behaviour 0 0 X tunnel mode 0 1 0 passive close, only set headers then tunnel 0 1 1 forced close with keep-alive announce (alt) 1 0 0 server close 1 0 1 server close with keep-alive announce 1 1 0 forced close (alt) 1 1 1 forced close with keep-alive announce (alt) At this point this results in 4 distinct effective modes for a request being processed : - tunnel mode : Connection header is left untouched and body is ignored - passive close : Connection header is changed and body is ignored - server close : Connection header set, body scanned, client-side keep-alive is made possible regardless of server-side capabilities - forced close : Connection header set, body scanned, connection closed. The "close" modes may be combined with a fake keep-alive announce to the server in order to workaround buggy servers that disable chunked encoding and content length announces when the client does not ask for keep-alive. Note: "http-pretend-keepalive" alone has no effect. However, if it is set in a backend while a frontend is in "http-close" mode, then the combination of both will result in a forced close with keep-alive announces for requests passing through both.