~ubuntu-branches/ubuntu/saucy/haproxy/saucy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'+' = done, '-' = todo, '*' = done except doc

1.2.12 :
 + weighted RR/SH

1.2.13 :
 + maxconn
 + queueing

1.2.14 :
 + HTML status page

        stats enable
        stats uri /?stats  
        stats realm w.ods.org\ statistics
        stats auth user1:pass1
        stats auth user2:pass2
        stats auth user3:pass3
        stats scope <px_id> | '.'

 + allow server-less proxies (for stats)

 - separate timeout controls

 + option 'abortonclose' : if the session is queued or being connecting
   to the server, and the client sends a shutdown(), then decide to abort
   the session early because in most situations, this will be caused by
   a client hitting the 'Stop' button, so there's no reason to overload
   the servers with unservable requests. However, this is not HTTP compliant
   and might cause little trouble to some very specific clients used to
   close immediately after sending the request (no support for KA, which ones?)

 + minconn : makes the server's maxconn dynamic, which will be computed as a
   ratio of the proxy's sessions :
     srv->effective_maxconn =
          max(srv->maxconn * px->nbsess / px->maxconn, srv->minconn)

1.2.15 :
 + monitor-uri : specify an URI for which we will always return 'HTTP/1.0 200'
   and never forward nor log it.

 + option ssl-hello-chk : send SSLv3 client hello messages to check the servers

1.3 :
 - remove unused STATTIME

 - reference all the include files that must be created, possibly under subdirs :

   - acl.h      => more general ACL work
   - appcook.h  => appsession-related cookies
   - backend.h  => back-end part of the PR_O_* + backend definitions
   - buffers.h  => buffer management relying on memory.h
   - capture.h  => header and cookie capture
   - cfgparse.h => configuration parser
   - checks.h   => health checks
   - clireq.h   => the client side "request" part of the current sessions.
   - compat.h   => compatibility with other OSes (TCP_NODELAY, ...)
   - config.h   => config parameters, renamed CONFIG_HAP_*, includes defaults.h
   - controls.h => SN_CACHEABLE, ...
   - cookies.h  => definitions related to cookie management + SN_SCK_*
   - defaults.h => many default values, might disappear soon after cleanup
   - frontend.h => front-end part of the PR_O_* + client definitions + listeners
   - global.h   => shared global variables
   - http.h     => HTTP state definitions and transitions
   - httperr.{hc} => HTTP return codes
   - libtask.h  => task scheduler
   - libtime.h  => time-related definitions
   - loadbal.h  => load balancing algorithms
   - log.h      => log definitions
   - memory.h   => pools
   - polling.h  => definitions of select(), poll(), INTBITS, ...
   - queue.h    => queue management
   - regex.h    => filtering
   - servers.h  => servers definitions (SRV_*, states, ...)
   - fd.h       => FD_ST* (add FD_DGRAM), RES_*, socket states, etc...
   - srvreq.h   => the server side "request" part of the current sessions.
   - standard.h => general purpose macros and defines (eg: MIN/MAX, ...)
   - startup.h  => MODE_*
   - tuning.h   => platform-specific tuning parameters


 - clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent.

 - handle half-closed connections better (cli/srv would not distinguish
   DATA/SHUTR/SHUTW, it would be a session flag which would tell shutr/shutw).
   Check how it got changed in httpterm.

 - 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on
   demand)

 - wait queues replaced for priority-based trees

 - ability to assign a prio based on L7 matching

 - prio-based O(1) scheduler

 - maxconn reserve for VIP/admins

 - verify if it would be worth implementing an epoll_ctl_batch() for Linux

 - balance LC/WLC (patch available)

 - option minservers XXX : activates some backup servers when active servers
   are insufficient

 - monitor minservers XXX : monitor-net and monitor-uri could report a failure
   when the number of active servers is below this threshold.

 - option smtp-chk : use SMTP health checks (avoid logs if possible)

 - new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello