diff options
Diffstat (limited to '')
-rw-r--r-- | doc/close-options.txt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/doc/close-options.txt b/doc/close-options.txt new file mode 100644 index 0000000..0554bb8 --- /dev/null +++ b/doc/close-options.txt @@ -0,0 +1,39 @@ +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. + |