Medium-long term wish list - 2016/11/25

Legend: '+' = done, '-' = todo, '*' = done except doc

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

  - support for time-ordered priority queues with ability to add an offset
    based on request matching. Each session will have one ebtree node to be
    attached to whatever queue the session is waiting in.

  - make it possible to condition a timeout on an ACL (dynamic timeouts)

  - forwardfor/originalto except with IPv6

  - remove lots of remaining Alert() calls or ensure that they forward to
    send_log() after the fork.

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

  - implement support for event-triggerred epoll()

  - 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 :
  - outgoing log load-balancing (round-robin or hash among multiple servers)

  - internal socket for "server XXX frontend:name"

  - HTTP/2.0

  - XML inspection (content-switching for SOAP requests)

  - random cookie generator

  - fastcgi to servers

  - hot config reload

  - RAM-based cache for small files

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