haproxy/include/common
Willy Tarreau 967de20a43 BUG/MEDIUM: list: fix again LIST_ADDQ_LOCKED
Well, that's becoming embarrassing. Now this fixes commit 4ef6801c
("BUG/MEDIUM: list: correct fix for LIST_POP_LOCKED's removal of last
element") which itself tried to fix commit 285192564. This fix only
works under low contention and was tested with the listener's queue.
With the idle conns it's obvious that it's still wrong since adding
more than one element to the list leaves a LLIST_BUSY pointer into
the list's head. This was visible when accumulating idle connections
in a server's list.

This new version of the fix almost goes back to the original code,
except that since then we addressed issues with expectedly idempotent
operations that were not. Now the code has been verified on paper again
and has survived 300 million connections spread over 4 threads.

This will have to be backported if the commit above is backported.
2019-03-04 14:09:22 +01:00
..
accept4.h
base64.h
buf.h BUG/MEDIUM: buffer: Make sure b_is_null handles buffers waiting for allocation. 2019-01-31 08:07:17 +01:00
buffer.h MEDIUM: memory: make the pool cache an array and not a thread_local 2018-11-26 19:50:32 +01:00
cfgparse.h MINOR: cfgparse: make the process/thread parser support a maximum value 2019-01-26 13:25:14 +01:00
chunk.h CLEANUP: Fix typo in the chunk headers file 2018-12-02 18:37:56 +01:00
compat.h MINOR: compat: automatically detect support for crypt_r() 2018-10-29 19:14:14 +01:00
compiler.h MINOR: compiler: add a new macro ALREADY_CHECKED() 2018-12-08 15:27:03 +01:00
config.h MINOR: debug: Add an option that causes random allocation failures. 2019-01-31 19:38:25 +01:00
debug.h MINOR: debug: make the ABORT_NOW macro use a volatile int 2018-12-16 08:17:23 +01:00
defaults.h MINOR: config: make MAX_PROCS configurable at build time 2019-02-07 15:10:19 +01:00
epoll.h
errors.h
h1.h MINOR: h1: make the H1 headers block parser able to parse headers only 2019-01-04 10:48:03 +01:00
h2.h BUG/MEDIUM: h2/htx: Correctly handle interim responses when HTX is enabled 2019-02-19 16:26:14 +01:00
hash.h
hathreads.h BUG/MEDIUM: listener: use a self-locked list for the dequeue lists 2019-02-28 16:08:54 +01:00
hpack-dec.h MAJOR: chunks: replace struct chunk with struct buffer 2018-07-19 16:23:43 +02:00
hpack-enc.h MINOR: hpack: provide a function to encode an HTTP path 2018-12-11 09:07:02 +01:00
hpack-huff.h
hpack-tbl.h BUG/MINOR: hpack: return a compression error on invalid table size updates 2019-01-24 15:27:06 +01:00
http-hdr.h MINOR: http: add http_hdr_del() to remove a header from a list 2018-09-14 17:40:35 +02:00
http.h MEDIUM: proto_htx: Convert all HTTP error messages into HTX 2018-12-01 17:37:27 +01:00
htx.h MINOR: htx: Add function to drain data from an HTX message 2019-02-26 14:04:23 +01:00
initcall.h BUILD/MEDIUM: initcall: Fix build on MacOS. 2019-02-15 14:32:35 +01:00
ist.h MEDIUM: ist: use local conversion arrays to case conversion 2018-12-07 13:25:59 +01:00
istbuf.h MINOR: buffer: rename the data length member to '->data' 2018-07-19 16:23:43 +02:00
memory.h MINOR: pools: Cast to volatile int * instead of int *. 2018-12-16 08:15:16 +01:00
mini-clist.h BUG/MEDIUM: list: fix again LIST_ADDQ_LOCKED 2019-03-04 14:09:22 +01:00
namespace.h MINOR: namespaces: don't build namespace.c if disabled 2018-11-12 19:15:15 +01:00
net_helper.h
regex.h
splice.h
standard.h MINOR: tools: implement functions to look up the nth bit set in a mask 2019-02-27 14:27:07 +01:00
syscall.h
template.h
ticks.h
time.h MINOR: poller: move the call of tv_update_date() back to the pollers 2018-11-22 18:57:37 +01:00
tools.h
uri_auth.h
version.h BUILD: add a new file "version.c" to carry version updates 2019-01-04 18:20:32 +01:00
xref.h MINOR: xref: Add missing barriers. 2019-01-31 19:38:25 +01:00