Medium-long term wish list - updated 2019/06/15 Legend: '+' = done, '-' = todo, '*' = done except doc 2.1 or later : - return-html code xxx [ file "xxx" | text "xxx" ] if - return-raw [ file "xxx" | text "xxx" ] if - have multi-criteria analysers which subscribe to req flags, rsp flags, and stream interface changes. This would result in a single analyser to wait for the end of data transfer in HTTP. - make it possible to condition a timeout on an ACL (dynamic timeouts) - forwardfor/originalto except with IPv6 - tcp-request session expect-proxy {L4|L5} if ... - wait on resource (time, mem, CPU, socket, server's conn, server's rate, ...) - bandwidth limits - buddy servers to build defined lists of failovers. Detect loops during the config check. server XXX buddy YYY server YYY # may replace XXX when XXX fails - spare servers : servers which are used in LB only when a minimum farm weight threshold is not satisfied anymore. Useful for inter-site LB with local pref by default. - add support for event-triggered epoll, and maybe change all events handling to pass through an event cache to handle temporarily disabled events. - evaluate the changes required for multi-process+shared mem or multi-thread +thread-local+fast locking. Old, maybe obsolete points : - clarify licence by adding a 'MODULE_LICENCE("GPL")' or something equivalent. - 3 memory models : failsafe (prealloc), normal (current), optimal (alloc on demand) - verify if it would be worth implementing an epoll_ctl_batch() for Linux - option minservers XXX : activates some spare servers when active servers are insufficient - initcwnd parameter for bind sockets : needed in kernel first - have a callback function which would be called after a server is selected, for header post-processing. That would be mainly used to remove then add the server's name or cookie in a header so that the server knows it. Unsorted : - internal socket for "server XXX frontend:name" - XML inspection (content-switching for SOAP requests) - random cookie generator - fastcgi to servers - hot config reload - RHI - BGP - telnet/SSH cli - dynamic memory allocation - dynamic weights based on check response headers and traffic response time - various kernel-level acceleration (multi-accept, ssplice, epoll2...)