| '+' = 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.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 |
| |