mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-26 06:32:13 +00:00
8263b91a53
These docs were still lying in my directory uncommitted. They're not very important but can be useful for developers who seek info about internals.
47 lines
2.1 KiB
Plaintext
47 lines
2.1 KiB
Plaintext
2011/04/20 - List of keep-alive / close options with associated behaviours.
|
|
|
|
PK="http-pretend-keepalive", HC="httpclose", SC="http-server-close",
|
|
FC = "forceclose".
|
|
|
|
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 markes "(alt)".
|
|
|
|
FC SC HC PK Behaviour
|
|
0 0 0 X tunnel mode
|
|
0 0 1 0 passive close, only set headers then tunnel
|
|
0 0 1 1 forced close with keep-alive announce (alt)
|
|
0 1 0 0 server close
|
|
0 1 0 1 server close with keep-alive announce
|
|
0 1 1 0 forced close (alt)
|
|
0 1 1 1 forced close with keep-alive announce (alt)
|
|
1 * * 0 forced close
|
|
1 * * 1 forced close with keep-alive announce
|
|
|
|
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.
|
|
|
|
It is also worth noting that "option httpclose" alone has become useless since
|
|
1.4, because "option forceclose" does the right thing, while the former only
|
|
pretends to do the right thing. Both options might get merged in the future.
|
|
|