summaryrefslogtreecommitdiffstats
path: root/doc/close-options.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/close-options.txt')
-rw-r--r--doc/close-options.txt39
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.
+