haproxy/include/types
Willy Tarreau daacf36645 BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff
Dragan Dosen found that the listeners lock is not sufficient to protect
the listeners list when proxies are stopping because the listeners are
also unlinked from the protocol list, and under certain situations like
bombing with soft-stop signals or shutting down many frontends in parallel
from multiple CLI connections, it could be possible to provoke multiple
instances of delete_listener() to be called in parallel for different
listeners, thus corrupting the protocol lists.

Such operations are pretty rare, they are performed once per proxy upon
startup and once per proxy on shut down. Thus there is no point trying
to optimize anything and we can use a global lock to protect the protocol
lists during these manipulations.

This fix (or a variant) will have to be backported as far as 1.8.
2019-07-24 16:45:02 +02:00
..
acl.h
action.h MINOR: action: Add the return code ACT_RET_DONE for actions 2019-07-05 14:26:14 +02:00
activity.h MINOR: activity: report the number of failed pool/buffer allocations 2019-05-28 17:25:21 +02:00
applet.h BUG/MINOR: mworker/cli: don't output a \n before the response 2019-07-01 15:34:11 +02:00
arg.h MEDIUM: stick-table: Stop handling stick-tables as proxies. 2019-05-07 06:54:06 +02:00
auth.h
backend.h MEDIUM: backend: move all LB algo parameters into an union 2019-01-14 19:33:17 +01:00
capture.h CLEANUP: pools: rename all pool functions and pointers to remove this "2" 2017-11-24 17:49:53 +01:00
channel.h CLEANUP: channel: Remove the unused flag CF_WAKE_CONNECT 2019-07-19 09:24:12 +02:00
checks.h MEDIUM: connection: Upstream SOCKS4 proxy support 2019-05-31 17:24:06 +02:00
cli.h MEDIUM: cli: disable some keywords in the master 2018-10-28 13:51:39 +01:00
compression.h MAJOR: buffer: finalize buffer detachment 2018-07-19 16:23:43 +02:00
connection.h MAJOR: connection: remove the addr field 2019-07-19 13:50:09 +02:00
counters.h MINOR: cache: report the number of cache lookups and cache hits 2018-12-14 14:00:25 +01:00
dict.h MINOR: dict: Store the length of the dictionary entries. 2019-06-07 15:47:54 +02:00
dns.h BUG/MEDIUM: dns: make the port numbers unsigned 2019-05-22 20:07:45 +02:00
fd.h BUG/MEDIUM: fd/threads: fix excessive CPU usage on multi-thread accept 2019-07-09 10:41:24 +02:00
filters.h MAJOR: filters: Remove code relying on the legacy HTTP mode 2019-07-19 09:18:27 +02:00
freq_ctr.h
global.h MEDIUM: config: Remove parsing of req* and rsp* directives 2019-07-19 09:24:12 +02:00
hlua.h REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
http_ana.h REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files 2019-07-19 09:24:12 +02:00
http_htx.h REORG: htx: merge types+proto into common/htx.h 2018-12-11 17:15:04 +01:00
lb_chash.h MINOR: backend: move hash_balance_factor out of chash 2019-01-14 19:33:17 +01:00
lb_fas.h
lb_fwlc.h
lb_fwrr.h
lb_map.h MEDIUM: threads/lb: Make LB algorithms (lb_*.c) thread-safe 2017-10-31 13:58:31 +01:00
listener.h CLEANUP: ssl: never include openssl/*.h outside of openssl-compat.h anymore 2019-05-10 09:36:42 +02:00
log.h MINOR: log: Enable the log sampling and load-balancing feature. 2019-04-30 09:25:09 +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 MINOR: obj_type: new object type for struct stream 2019-04-23 11:35:56 +02:00
pattern.h MINOR: threads: Use __decl_hathreads to declare locks 2017-11-13 11:38:17 +01:00
peers.h MINOR: peers: Optimization for dictionary cache lookup. 2019-06-07 15:47:54 +02:00
pipe.h
port_range.h BUG/MEDIUM: port_range: Make the ring buffer lock-free. 2019-04-30 15:10:17 +02:00
proto_udp.h
protocol_buffers.h MINOR: sample: Rework gRPC converter code. 2019-03-05 11:04:23 +01:00
protocol.h BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff 2019-07-24 16:45:02 +02:00
proxy.h MINOR: proxy/http_ana: Remove unused req_exp/rsp_exp and req_add/rsp_add lists 2019-07-19 09:24:12 +02:00
queue.h MINOR: queue: replace the linked list with a tree 2018-08-10 15:06:27 +02:00
sample.h MAJOR: http: Remove the HTTP legacy code 2019-07-19 09:24:12 +02:00
server.h MEDIUM: server: server-state global file stored in a tree 2019-06-17 13:40:42 +02:00
session.h MEDIUM: sessions: Introduce session flags. 2019-05-29 15:41:47 +02:00
shctx.h MINOR: shctx: Change max. object size type to unsigned int. 2018-10-26 04:54:40 +02:00
signal.h
spoe.h BUG/MEDIUM: spoe: arg len encoded in previous frag frame but len changed 2019-04-29 16:02:05 +02:00
ssl_sock.h CLEANUP: ssl: make inclusion of openssl headers safe 2019-05-10 09:58:43 +02:00
stats.h MINOR: raw_sock: report global traffic statistics 2019-05-23 11:45:38 +02:00
stick_table.h MINOR: stick-table: Add "server_name" new data type. 2019-06-05 08:33:35 +02:00
stream_interface.h MEDIUM: stream-int: introduce a new state SI_ST_RDY 2019-06-06 16:36:19 +02:00
stream.h MINOR: stream: add a new target_addr entry in the stream structure 2019-07-19 13:50:09 +02:00
task.h MINOR: task: introduce work lists 2019-07-12 09:07:48 +02:00
template.h
vars.h MINOR: threads: Use __decl_hathreads to declare locks 2017-11-13 11:38:17 +01:00