haproxy/include/proto
Willy Tarreau bf883e0aa7 MAJOR: session: implement a wait-queue for sessions who need a buffer
When a session_alloc_buffers() fails to allocate one or two buffers,
it subscribes the session to buffer_wq, and waits for another session
to release buffers. It's then removed from the queue and woken up with
TASK_WAKE_RES, and can attempt its allocation again.

We decide to try to wake as many waiters as we release buffers so
that if we release 2 and two waiters need only once, they both have
their chance. We must never come to the situation where we don't wake
enough tasks up.

It's common to release buffers after the completion of an I/O callback,
which can happen even if the I/O could not be performed due to half a
failure on memory allocation. In this situation, we don't want to move
out of the wait queue the session that was just added, otherwise it
will never get any buffer. Thus, we only force ourselves out of the
queue when freeing the session.

Note: at the moment, since session_alloc_buffers() is not used, no task
is subscribed to the wait queue.
2014-12-24 23:47:33 +01:00
..
acl.h MINOR: pattern: store configuration reference for each acl or map pattern. 2014-03-17 18:06:07 +01:00
arg.h MAJOR: sample: maintain a per-proxy list of the fetch args to resolve 2013-04-03 02:13:02 +02:00
auth.h MEDIUM: pattern: The match function browse itself the list or the tree. 2014-03-17 18:06:07 +01:00
backend.h MAJOR: checks: add support for a new "drain" administrative mode 2014-05-23 14:29:11 +02:00
channel.h MEDIUM: channel: do not report full when buf_empty is present on a channel 2014-12-24 23:47:32 +01:00
checks.h MEDIUM: checks: simplify server up/down/nolb transitions 2014-05-23 14:29:11 +02:00
compression.h MINOR: compression: CPU usage limit 2012-11-21 02:15:16 +01:00
connection.h MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
cttproxy.h [MEDIUM] check for cttproxy support when required 2007-03-24 17:24:39 +01:00
dumpstats.h MEDIUM: stats: reimplement HTTP keep-alive on the stats page 2014-04-24 17:24:56 +02:00
fd.h MAJOR: polling: centralize calls to I/O callbacks 2014-11-21 20:37:32 +01:00
freq_ctr.h MINOR: freq_ctr: introduce a new averaging method 2014-06-17 17:15:51 +02:00
frontend.h REORG: connection: move the PROXY protocol management to connection.c 2012-10-05 00:32:33 +02:00
hdr_idx.h OPTIM/MINOR: move the hdr_idx pools out of the proxy struct 2011-10-24 18:15:04 +02:00
lb_chash.h [MEDIUM] backend: implement consistent hashing variation 2009-10-09 07:17:58 +02:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h [CLEANUP] backend: move LB algos to individual files 2009-10-01 11:19:37 +02:00
lb_fwrr.h [CLEANUP] backend: move LB algos to individual files 2009-10-01 11:19:37 +02:00
lb_map.h [MINOR] lb_map: reorder code in order to ease integration of new hash functions 2009-10-01 21:11:15 +02:00
listener.h CLEANUP: fix missing include <string.h> in proto/listener.h 2013-06-14 19:52:17 +02:00
log.h MEDIUM: log: support a user-configurable max log line length 2014-06-27 18:13:53 +02:00
map.h MINOR: map: export parse output sample functions 2013-12-12 15:44:05 +01:00
obj_type.h MINOR: obj: introduce a new type appctx 2013-12-09 15:40:22 +01:00
pattern.h BUG/MEDIUM: pattern: don't load more than once a pattern list. 2014-11-24 15:40:16 +01:00
payload.h MINOR: payload: split smp_fetch_rdp_cookie() 2013-08-01 21:17:13 +02:00
peers.h [CLEANUP] peers.h: fix declarations 2011-06-18 20:27:19 +02:00
pipe.h [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
port_range.h [MEDIUM] add support for binding to source port ranges during connect 2009-06-10 12:23:32 +02:00
proto_http.h BUG/MEDIUM: http: adjust close mode when switching to backend 2014-09-30 18:44:22 +02:00
proto_tcp.h MEDIUM: listener: implement a per-protocol pause() function 2014-07-08 01:13:34 +02:00
proto_uxst.h BUG/MEDIUM: unix: completely unbind abstract sockets during a pause() 2014-07-08 01:13:35 +02:00
protocol.h REORG: split "protocols" files into protocol and listener 2012-09-15 22:29:32 +02:00
proxy.h MEDIUM: proxy: create a tree to store proxies by name 2014-03-15 07:48:35 +01:00
queue.h REORG: checks: put the functions in the appropriate files ! 2014-05-22 11:27:00 +02:00
raw_sock.h REORG: connection: rename the data layer the "transport layer" 2012-10-04 22:26:09 +02:00
sample.h MINOR: configuration: File and line propagation 2014-03-17 18:06:08 +01:00
server.h BUG/MINOR: server: move the directive #endif to the end of file 2014-07-29 11:03:14 +02:00
session.h MAJOR: session: implement a wait-queue for sessions who need a buffer 2014-12-24 23:47:33 +01:00
shctx.h BUG/MAJOR: ssl: Fallback to private session cache if current lock mode is not supported. 2014-05-08 22:46:32 +02:00
signal.h CLEANUP: includes: fix includes for a number of users of fd.h 2012-09-03 20:49:14 +02:00
ssl_sock.h BUILD: ssl: use OPENSSL_NO_OCSP to detect OCSP support 2014-12-09 20:49:22 +01:00
stick_table.h MEDIUM: stick-table: make it easier to register extra data types 2014-07-15 19:14:52 +02:00
stream_interface.h MINOR: stream-int: retrieve session pointer from stream-int 2014-12-24 23:47:31 +01:00
task.h MINOR: task: release the task pool when stopping 2014-11-13 16:57:19 +01:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00