haproxy/include/types
Willy Tarreau fa7e10251d [MAJOR] rework of the server FSM
srv_state has been removed from HTTP state machines, and states
have been split in either TCP states or analyzers. For instance,
the TARPIT state has just become a simple analyzer.

New flags have been added to the struct buffer to compensate this.
The high-level stream processors sometimes need to force a disconnection
without touching a file-descriptor (eg: report an error). But if
they touched BF_SHUTW or BF_SHUTR, the file descriptor would not
be closed. Thus, the two SHUT?_NOW flags have been added so that
an application can request a forced close which the stream interface
will be forced to obey.

During this change, a new BF_HIJACK flag was added. It will
be used for data generation, eg during a stats dump. It
prevents the producer on a buffer from sending data into it.

  BF_SHUTR_NOW  /* the producer must shut down for reads ASAP  */
  BF_SHUTW_NOW  /* the consumer must shut down for writes ASAP */
  BF_HIJACK     /* the producer is temporarily replaced        */

BF_SHUTW_NOW has precedence over BF_HIJACK. BF_HIJACK has
precedence over BF_MAY_FORWARD (so that it does not need it).

New functions buffer_shutr_now(), buffer_shutw_now(), buffer_abort()
are provided to manipulate BF_SHUT* flags.

A new type "stream_interface" has been added to describe both
sides of a buffer. A stream interface has states and error
reporting. The session now has two stream interfaces (one per
side). Each buffer has stream_interface pointers to both
consumer and producer sides.

The server-side file descriptor has moved to its stream interface,
so that even the buffer has access to it.

process_srv() has been split into three parts :
  - tcp_get_connection() obtains a connection to the server
  - tcp_connection_failed() tests if a previously attempted
    connection has succeeded or not.
  - process_srv_data() only manages the data phase, and in
    this sense should be roughly equivalent to process_cli.

Little code has been removed, and a lot of old code has been
left in comments for now.
2008-11-02 10:19:04 +01:00
..
acl.h [MEDIUM] acl: set types on all currently known ACL verbs 2008-07-25 19:31:03 +02:00
backend.h [MAJOR] implement parameter hashing for POST requests 2008-04-15 15:30:41 +02:00
buffers.h [MAJOR] rework of the server FSM 2008-11-02 10:19:04 +01:00
capture.h [MAJOR] last bunch of capture changes for mempool v2 2007-05-13 22:46:04 +02:00
fd.h [MAJOR] convert all expiration timers from timeval to ticks 2008-07-07 00:09:58 +02:00
global.h [MAJOR] convert all expiration timers from timeval to ticks 2008-07-07 00:09:58 +02:00
hdr_idx.h [BUG] files were missing for hdr_idx in previous commit 2006-12-04 02:20:02 +01:00
httperr.h [MAJOR] udpated the stats page to clearly distinguish FEs and BEs 2007-01-01 21:38:07 +01:00
log.h [BUILD] fix build on AIX due to recent log changes 2007-12-05 11:11:55 +01:00
polling.h [MAJOR] introduced speculative I/O with epoll() 2007-04-16 00:53:59 +02:00
proto_http.h [MEDIUM] merge inspect_exp and txn->exp into request buffer 2008-08-17 18:03:28 +02:00
proto_tcp.h [MAJOR] implement tcp request content inspection 2008-07-16 10:29:07 +02:00
protocols.h [MAJOR] convert all expiration timers from timeval to ticks 2008-07-07 00:09:58 +02:00
proxy.h [BUILD] fix warning in proto_tcp.c with gcc >= 4 2008-08-17 17:13:47 +02:00
queue.h [MAJOR] ported pendconn to mempools v2 2007-05-13 20:19:55 +02:00
server.h [BUG] fix the dequeuing logic to ensure that all requests get served 2008-06-20 15:08:06 +02:00
session.h [MAJOR] rework of the server FSM 2008-11-02 10:19:04 +01:00
stream_interface.h [MAJOR] rework of the server FSM 2008-11-02 10:19:04 +01:00
task.h [MAJOR] convert all expiration timers from timeval to ticks 2008-07-07 00:09:58 +02:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00