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 <acl>

  - return-raw  [ file "xxx" | text "xxx" ] if <acl>

  - 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...)
