haproxy/include/types
Christopher Faulet a73e59b690 BUG/MAJOR: Fix how the list of entities waiting for a buffer is handled
When an entity tries to get a buffer, if it cannot be allocted, for example
because the number of buffers which may be allocated per process is limited,
this entity is added in a list (called <buffer_wq>) and wait for an available
buffer.

Historically, the <buffer_wq> list was logically attached to streams because it
were the only entities likely to be added in it. Now, applets can also be
waiting for a free buffer. And with filters, we could imagine to have more other
entities waiting for a buffer. So it make sense to have a generic list.

Anyway, with the current design there is a bug. When an applet failed to get a
buffer, it will wait. But we add the stream attached to the applet in
<buffer_wq>, instead of the applet itself. So when a buffer is available, we
wake up the stream and not the waiting applet. So, it is possible to have
waiting applets and never awakened.

So, now, <buffer_wq> is independant from streams. And we really add the waiting
entity in <buffer_wq>. To be generic, the entity is responsible to define the
callback used to awaken it.

In addition, applets will still request an input buffer when they become
active. But they will not be sleeped anymore if no buffer are available. So this
is the responsibility to the applet I/O handler to check if this buffer is
allocated or not. This way, an applet can decide if this buffer is required or
not and can do additional processing if not.

[wt: backport to 1.7 and 1.6]
2016-12-12 19:11:04 +01:00
..
acl.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
action.h MEDIUM: tcp: add registration and processing of TCP L5 rules 2016-10-21 18:19:24 +02:00
applet.h BUG/MAJOR: Fix how the list of entities waiting for a buffer is handled 2016-12-12 19:11:04 +01:00
arg.h MINOR: http/conf: store the use_backend configuration file and line for logs 2016-11-25 07:15:09 +01:00
auth.h MAJOR: auth: Change the internal authentication system. 2014-03-17 18:06:06 +01:00
backend.h MEDIUM: backend: add the crc32 hash algorithm for load balancing 2015-01-20 19:48:14 +01:00
capture.h MINOR: capture: extend the captures to support non-header keys 2014-06-13 16:32:48 +02:00
channel.h MEDIUM: filters: Add pre and post analyzer callbacks 2016-05-18 15:11:54 +02:00
checks.h MAJOR: check: find out which port to use for health check at run time 2016-09-11 08:12:13 +02:00
cli.h CLEANUP: cli: rename STAT_CLI_* to CLI_ST_* 2016-11-24 16:59:28 +01:00
compression.h MAJOR: filters/http: Rewrite the HTTP compression as a filter 2016-02-09 14:53:15 +01:00
connection.h MINOR: connection: add names for transport and data layers 2016-11-24 16:58:12 +01:00
counters.h CLEANUP: counters: move from 3 types to 2 types 2016-11-25 15:03:12 +01:00
dns.h MINOR: dns: implement extra 'hold' timers. 2016-11-09 15:30:47 +01:00
fd.h DEBUG: connection: mark the closed FDs with a value that is easier to detect 2016-11-18 15:00:42 +01:00
filters.h MINOR: filters: Add check_timeouts callback to handle timers expiration on streams 2016-11-21 15:29:58 +01:00
freq_ctr.h [MINOR] freq_ctr: add new types and functions for periods different from 1s 2010-08-10 14:01:09 +02:00
global.h MEDIUM: vars: Add a per-process scope for variables 2016-11-09 22:57:00 +01:00
hdr_idx.h
hlua.h MINOR: lua: Allow argument for actions 2016-12-12 14:34:56 +01:00
lb_chash.h MINOR: backend: add hash-balance-factor option for hash-type consistent 2016-10-25 20:21:32 +02:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h
lb_fwrr.h
lb_map.h
listener.h CLEANUP: counters: move from 3 types to 2 types 2016-11-25 15:03:12 +01:00
log.h CLEANUP: logs: remove unused log format field definitions 2016-08-23 15:25:28 +02:00
mailers.h MINOR: mailers: make it possible to configure the connection timeout 2016-02-20 15:33:06 +01:00
map.h CLEANUP: map: it seems that the map were planed to be chained 2016-03-30 15:41:15 +02:00
obj_type.h CLEANUP: applet: rename struct si_applet to applet 2015-04-23 17:56:16 +02:00
pattern.h MINOR: map: Add regex matching replacement 2016-02-10 23:38:34 +01:00
peers.h MINOR: peers: remove the pointer to the stream 2016-10-31 20:07:01 +01:00
pipe.h
port_range.h
proto_http.h BUILD: http: include types/sample.h in proto_http.h 2016-11-11 07:56:48 +01:00
proto_udp.h MEDIUM: protocol: add minimalist UDP protocol client 2015-06-13 22:07:35 +02:00
protocol.h CLEANUP: fix inconsistency between fd->iocb, proto->accept and accept() 2016-04-14 11:18:22 +02:00
proxy.h CLEANUP: counters: move from 3 types to 2 types 2016-11-25 15:03:12 +01:00
queue.h REORG/MAJOR: session: rename the "session" entity to "stream" 2015-04-06 11:23:56 +02:00
sample.h BUG/MEDIUM: samples: make smp_dup() always duplicate the sample 2016-08-09 14:03:23 +02:00
server.h CLEANUP: counters: move from 3 types to 2 types 2016-11-25 15:03:12 +01:00
session.h MEDIUM: vars: move the session variables to the session, not the stream 2015-06-19 11:59:02 +02:00
signal.h [MEDIUM] signals: add support for registering functions and tasks 2010-08-27 18:00:40 +02:00
ssl_sock.h MEDIUM: Add support for updating TLS ticket keys via socket 2015-05-16 11:28:04 +02:00
stats.h REORG: cli: move "show info" to stats.c 2016-11-24 16:59:27 +01:00
stick_table.h MEDIUM: http: implement http-response track-sc* directive 2016-07-26 14:31:14 +02:00
stream_interface.h MINOR: stream-int: add two flags to indicate an applet's wishes regarding I/O 2015-04-23 17:56:17 +02:00
stream.h BUG/MAJOR: Fix how the list of entities waiting for a buffer is handled 2016-12-12 19:11:04 +01:00
task.h DIET/MINOR: task: reduce struct task size by 8 bytes 2013-12-09 16:06:22 +01:00
template.h
vars.h MEDIUM: vars: Add a per-process scope for variables 2016-11-09 22:57:00 +01:00