Medium-long term roadmap - 2010/04/10

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

1.5 (ETA 2010/12/31) :
  - server-side HTTP keepalive

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

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

  - add support for client-side and server-side unix sockets

  - try to remove srv==NULL internally and assign a dummy server to each backend
    for dispatch, http_proxy and transparent modes.

  - rename L4 acls as L6 ACLs when some content is involved

  - add new L4 ACL checks immediately after accept, before even allocating the
    buffers ("connection {accept|reject|delay|freeze} {if|unless}").

  - implement support for "connection freeze" after accept. A list of frozen
    connections should be maintained so that it is possible to recycle them
    when new file descriptors are required.

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

  - assign a nice priority based on ACLs.

  - pattern extraction is needed for ACLs and stickiness. It would work like
    this :

       acl <name> <pattern> [-i] <values>...

    All ACL fetch method currently available would be transformed into pattern
    extraction methods. That way we could stick on hdr(x-forwarded-for) or use
    source 0.0.0.0 usesrc <pattern> (such as "hdr_ip(headername)"). Note that
    ACLs sometimes need iterative matching/extraction.

  - add support for complex pattern extraction rules :

       pattern = <pattern_term>
               | '{' pattern_expr '}'

       pattern_expr = <pattern_term> [ <transform> ... ]

  - support loading data sets from files
      + present/not present (eg: netmasks)
      - pattern conversion per prefixes. Eg: convert src IP to country.

  - make new patterns available based on stickiness matching :
      - number of entries in table for the matched pattern
      - same after having increased the match counter

  - add support for concurrency match in tables
      - just like stickiness, but counted per session (or request), increased
        on first match and decreased at end of request or connection. This
        requires that the session has a list of matched terms that must be
        released at the end.

1.6 (will probably change anyway) :
  - wait on resource (mem, socket, server's conn, server's rate, ...)

  - bandwidth limits

  - create internal services and make stats, CLI, etc... part of that.

  - use_server ... if ...

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


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)

 - ability to assign a task priority based on L7 matching

 - 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

 - new keyword 'check' : check http xxx, check smtp xxx, check ssl-hello

