Medium-long term roadmap - 2015/10/13

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

1.7 or later :
  - return-html code xxx [ file "xxx" | text "xxx" ] if <acl>

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

  - add the ability to only dump response errors to more easily detect
    anomalies without being polluted with attacks in requests.

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

  - add a flag in logs to indicate keep-alive requests ?

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

  - ability to decide whether to drain or kill sessions when putting a server
    to maintenance mode => requires a per-server session list and the change
    above.

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