haproxy/src
Willy Tarreau 64d20fc9e0 BUG/MINOR: fd: my_closefrom() on Linux could skip contiguous series of sockets
We got a detailed report analysis showing that our optimization consisting
in using poll() to detect already closed FDs within a 1024 range has an
issue with the case where 1024 consecutive FDs are open (hence do not show
POLLNVAL) and none of them has any activity report. In this case poll()
returns zero update and we would just skip the loop that inspects all the
FDs to close the valid ones. One visible effect is that the called programs
might occasionally see some FDs being exposed in the low range of their fd
space, possibly making the process run out of FDs when trying to open a
file for example.

Note that this is actually a fix for commit b8e602cb1b ("BUG/MINOR: fd:
make sure my_closefrom() doesn't miss some FDs") that already faced a
more common form of this problem (incomplete but non-empty FDs reported).

This can be backported up to 2.0.
2024-04-19 17:06:21 +02:00
..
acl.c MINOR: acl: add extra diagnostics about suspicious string patterns 2024-02-03 12:08:11 +01:00
action.c MINOR: support for http-request set-timeout client 2023-09-28 08:49:22 +02:00
activity.c MEDIUM: cli/applet: Stop to test opposite SC in I/O handler of CLI commands 2024-03-28 17:28:20 +01:00
applet.c MEDIUM: stconn: Use one function to shut connection and applet endpoints 2024-04-19 16:33:35 +02:00
arg.c CLEANUP: arg: remove extra check in make_arg_list arg escaping 2022-11-22 16:27:52 +01:00
auth.c MINOR: auth: silence null dereference warning in check_user() 2022-11-24 15:24:02 +01:00
backend.c MINOR: lbprm: implement true "sticky" balance algo 2024-03-29 17:08:37 +01:00
base64.c
cache.c BUILD: cache: fix a build warning with gcc < 7 2024-04-17 09:43:32 +02:00
calltrace.c BUG/MINOR: calltrace: fix 'now' being used in place of 'date' 2023-04-27 18:14:57 +02:00
cbuf.c
cfgcond.c MINOR: protocol: move the global reuseport flag to the protocols 2023-04-23 09:46:15 +02:00
cfgdiag.c
cfgparse-global.c MINOR: cfgparse: Add a global option to expose deprecated directives 2024-03-15 11:31:48 +01:00
cfgparse-listen.c MEDIUM: proxy/log: leverage lf_expr API for logformat preparsing 2024-04-04 19:10:01 +02:00
cfgparse-quic.c MINOR: quic: HyStart++ implementation (RFC 9406) 2024-04-02 18:47:19 +02:00
cfgparse-ssl.c MEDIUM: ssl: support aliases in crt-store 2024-04-17 17:24:49 +02:00
cfgparse-tcp.c BUG/MINOR: cfgparse-tcp: leak when re-declaring interface from bind line 2023-06-06 15:15:17 +02:00
cfgparse-unix.c
cfgparse.c BUG/MEDIUM: peers: fix localpeer regression with 'bind+server' config style 2024-04-18 11:18:13 +02:00
channel.c MINOR: tree-wide: Only rely on co_data() to check channel emptyness 2023-10-17 18:51:13 +02:00
check.c MEDIUM: stconn: Use one function to shut connection and applet endpoints 2024-04-19 16:33:35 +02:00
chunk.c MEDIUM: init: initialize the trash earlier 2023-09-08 16:25:19 +02:00
cli.c BUG/MINOR: cli: Don't warn about a too big command for incomplete commands 2024-04-08 11:49:13 +02:00
clock.c MINOR: clock: provide a function to automatically adjust now_offset 2023-05-17 09:33:54 +02:00
compression.c MINOR: compression/slz: add support for a pure flush of pending bytes 2023-06-30 16:12:36 +02:00
connection.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
cpuset.c CLEANUP: Reapply xalloc_cast.cocci 2024-04-02 07:27:33 +02:00
debug.c BUG/BUILD: debug: fix unused variable error 2024-03-29 17:21:04 +01:00
dgram.c MINOR: dgram: allow to set rcv/sndbuf for dgram sockets as well 2023-10-18 17:01:19 +02:00
dict.c
dns_ring.c MEDIUM: ring/applet: turn the wait_entry list to an mt_list instead 2024-03-25 17:34:19 +00:00
dns.c MEDIUM: ring/applet: turn the wait_entry list to an mt_list instead 2024-03-25 17:34:19 +00:00
dynbuf.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
eb32sctree.c
eb32tree.c
eb64tree.c
ebimtree.c
ebistree.c
ebmbtree.c
ebpttree.c
ebsttree.c
ebtree.c
errors.c BUG/MAJOR: ring: use the correct size to reallocate startup_logs 2024-04-15 08:26:41 +02:00
ev_epoll.c MINOR: pollers: only update the local date during busy polling 2022-09-21 09:06:28 +02:00
ev_evports.c MEDIUM: evports: permit to report multiple events at once 2024-04-17 16:37:04 +02:00
ev_kqueue.c MINOR: pollers: only update the local date during busy polling 2022-09-21 09:06:28 +02:00
ev_poll.c BUG/MINOR: signals/poller: ensure wakeup from signals 2022-09-09 11:15:22 +02:00
ev_select.c MEDIUM: fd/poller: turn update_mask to group-local IDs 2022-07-15 20:16:30 +02:00
event_hdl.c CLEANUP: Reapply strcmp.cocci (2) 2024-04-02 07:27:33 +02:00
extcheck.c MINOR: ext-check: add an option to preserve environment variables 2023-11-23 16:53:57 +01:00
fcgi-app.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
fcgi.c BUG/MAJOR: fcgi: Fix uninitialized reserved bytes 2022-12-09 12:23:14 +01:00
fd.c BUG/MINOR: fd: my_closefrom() on Linux could skip contiguous series of sockets 2024-04-19 17:06:21 +02:00
filters.c Revert "MINOR: filter: "filter" requires TCP or HTTP mode" 2023-11-18 11:16:21 +01:00
fix.c
flt_bwlim.c BUG/MINOR: bwlim/config: fix missing '\n' after error messages 2024-04-03 17:34:36 +02:00
flt_http_comp.c BUG/MINOR: compression: possible NULL dereferences in comp_prepare_compress_request() 2023-11-29 08:59:27 +01:00
flt_spoe.c BUG/MEDIUM: spoe: Always retry when an applet fails to send a frame 2024-04-18 09:17:03 +02:00
flt_trace.c BUG/MINOR: trace: show wall-clock date, not internal date in show activity 2023-04-27 18:22:34 +02:00
freq_ctr.c BUG/MEDIUM: freq-ctr: Don't report overshoot for long inactivity period 2023-11-08 16:38:06 +01:00
frontend.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
guid.c BUG/MINOR: guid: fix crash on invalid guid name 2024-04-11 15:09:53 +02:00
h1_htx.c BUG/MINOR: h1-htx: properly initialize the err_pos field 2024-01-31 15:22:12 +01:00
h1.c CLEANUP: h1: remove unused function h1_measure_trailers() 2024-01-31 15:22:12 +01:00
h2.c MINOR: h2: Set the BODYLESS_RESP flag on the HTX start-line if necessary 2023-10-17 18:51:13 +02:00
h3_stats.c MEDIUM: stats: Be able to access a specific field into a stats module 2024-02-01 12:00:53 +01:00
h3.c MINOR: mux-quic: realign Tx buffer if possible 2024-01-31 16:28:54 +01:00
haproxy.c CLEANUP: assorted typo fixes in the code and comments 2024-04-17 11:14:44 +02:00
hash.c BUILD: hash: use __fallthrough in hash_djb2() 2022-11-14 11:14:02 +01:00
hlua_fcn.c MAJOR: stktable: split the keys across multiple shards to reduce contention 2024-04-03 17:34:47 +02:00
hlua.c BUG/MEDIUM: hlua: streams don't support mixing lua-load with lua-load-per-thread (2nd try) 2024-03-13 09:24:46 +01:00
hpack-dec.c BUG/CRITICAL: http: properly reject empty http header field names 2023-02-14 08:48:54 +01:00
hpack-enc.c
hpack-huff.c BUG/MEDIUM: hpack: fix incorrect huffman decoding of some control chars 2023-01-26 11:36:39 +01:00
hpack-tbl.c
hq_interop.c MEDIUM: mux-quic: properly handle conn Tx buf exhaustion 2024-01-31 16:28:54 +01:00
http_acl.c
http_act.c MAJOR: log: implement proper postparsing for logformat expressions 2024-04-04 19:10:01 +02:00
http_ana.c REORG: stats: extract HTML related functions 2024-04-18 17:04:08 +02:00
http_client.c MEDIUM: proxy/log: leverage lf_expr API for logformat preparsing 2024-04-04 19:10:01 +02:00
http_conv.c CLEANUP: assorted typo fixes in the code and comments 2023-04-01 18:33:40 +02:00
http_ext.c OPTIM: http_ext: avoid useless copy in http_7239_extract_{ipv4,ipv6} 2024-03-25 16:24:15 +01:00
http_fetch.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
http_htx.c MAJOR: log: implement proper postparsing for logformat expressions 2024-04-04 19:10:01 +02:00
http_rules.c MAJOR: log: implement proper postparsing for logformat expressions 2024-04-04 19:10:01 +02:00
http.c MEDIUM: http: add the ability to redefine http-err-codes and http-fail-codes 2024-01-11 15:10:08 +01:00
htx.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
init.c
jwt.c MINOR: jwt: Add support for RSA-PSS signatures (PS256 algorithm) 2023-03-08 10:43:04 +01:00
lb_chash.c MEDIUM: lb-chash: Deterministic node hashes based on server address 2024-04-02 07:00:10 +02:00
lb_fas.c
lb_fwlc.c
lb_fwrr.c
lb_map.c
lb_ss.c MINOR: lbprm: implement true "sticky" balance algo 2024-03-29 17:08:37 +01:00
linuxcap.c CLEANUP: assorted typo fixes in the code and comments 2024-04-17 11:14:44 +02:00
listener.c MINOR: listener/protocol: add proto name in alerts 2024-04-12 18:51:40 +02:00
log.c CLEANUP: assorted typo fixes in the code and comments 2024-04-17 11:14:44 +02:00
lru.c BUG/MINOR: lru: fix the standalone test case for invalid revision 2024-04-13 08:43:12 +02:00
mailers.c MINOR: mailers/hlua: disable email sending from lua 2023-05-05 16:28:32 +02:00
map.c MEDIUM: cli/applet: Stop to test opposite SC in I/O handler of CLI commands 2024-03-28 17:28:20 +01:00
mjson.c BUILD: mjson: Fix warning about unused variables 2023-05-11 09:22:46 +02:00
mqtt.c
mux_fcgi.c MEDIUM: muxes: Use one callback function to shut a mux stream 2024-04-19 16:33:40 +02:00
mux_h1.c MEDIUM: muxes: Use one callback function to shut a mux stream 2024-04-19 16:33:40 +02:00
mux_h2.c MEDIUM: muxes: Use one callback function to shut a mux stream 2024-04-19 16:33:40 +02:00
mux_pt.c MEDIUM: muxes: Use one callback function to shut a mux stream 2024-04-19 16:33:40 +02:00
mux_quic.c MEDIUM: muxes: Use one callback function to shut a mux stream 2024-04-19 16:33:40 +02:00
mworker-prog.c MEDIUM: clock: replace timeval "now" with integer "now_ns" 2023-04-28 16:08:08 +02:00
mworker.c MEDIUM: mworker: get rid of libsystemd 2024-04-03 15:53:18 +02:00
namespace.c BUG/MINOR: namespace: missing free in netns_sig_stop() 2023-06-14 11:27:29 +02:00
ncbuf.c MINOR: ncbuf: missing malloc checks in standalone code 2023-05-12 09:45:30 +02:00
pattern.c MINOR: map: mapfile ordering also matters for tree-based match types 2024-01-11 11:13:54 +01:00
payload.c MEDIUM: tree-wide: fetches that may return IPV4+IPV6 now return ADDR 2023-07-03 16:32:01 +02:00
peers.c MINOR: peers: stop relying on srv->addr to find peer port 2024-04-18 11:18:26 +02:00
pipe.c
pool.c DEBUG: pools: report the data around the offending area in case of mismatch 2024-04-12 18:01:55 +02:00
proto_quic.c MINOR: proto_quic: add proto name in alert 2024-04-12 18:51:50 +02:00
proto_rhttp.c CLEANUP: assorted typo fixes in the code and comments 2024-01-02 10:19:48 +01:00
proto_sockpair.c MEDIUM: proto: duplicate receivers marked RX_F_MUST_DUP 2023-04-21 17:41:26 +02:00
proto_tcp.c MINOR: protocol: move the global reuseport flag to the protocols 2023-04-23 09:46:15 +02:00
proto_udp.c MEDIUM: udp: allow to retrieve the frontend destination address 2024-01-02 11:44:42 +01:00
proto_uxdg.c MINOR: proto_ux: ability to dump ABNS names in error messages 2023-02-23 15:05:05 +01:00
proto_uxst.c MINOR: proto: skip socket setup for duped FDs 2023-04-21 17:41:26 +02:00
protocol.c MINOR: listener/protocol: add proto name in alerts 2024-04-12 18:51:40 +02:00
proxy.c MINOR: listener: implement GUID support 2024-04-05 15:40:42 +02:00
qmux_http.c MEDIUM: mux-quic: add BUG_ON if sending on locally closed QCS 2023-12-21 15:42:08 +01:00
qmux_trace.c MEDIUM: mux-quic: simplify sending API 2024-01-31 16:28:54 +01:00
qpack-dec.c BUG/MINOR: qpack: reject invalid dynamic table capacity 2024-02-15 17:46:53 +01:00
qpack-enc.c BUG/MEDIUM: qpack: allow 6xx..9xx status codes 2024-01-29 15:40:19 +01:00
qpack-tbl.c CLEANUP: qpack: properly use the QPACK macros not HPACK ones in debug code 2022-11-24 15:38:26 +01:00
queue.c MEDIUM: clock: replace timeval "now" with integer "now_ns" 2023-04-28 16:08:08 +02:00
quic_ack.c BUILD: quic: Variable name typo inside a BUG_ON(). 2024-02-05 14:31:21 +01:00
quic_cc_cubic.c BUILD: quic: 32 bits compilation issue (QUIC_MIN() usage) 2024-04-03 11:14:50 +02:00
quic_cc_newreno.c MINOR: quic: HyStart++ implementation (RFC 9406) 2024-04-02 18:47:19 +02:00
quic_cc_nocc.c REORG: quic: Move QUIC path definitions/declarations to quic_cc module 2023-11-28 15:37:50 +01:00
quic_cc.c CLEANUP: quic: fix headers 2022-10-03 16:25:17 +02:00
quic_cid.c CLEANUP: quic_cid: remove unused listener arg 2023-11-30 15:04:27 +01:00
quic_cli.c MEDIUM: cli/applet: Stop to test opposite SC in I/O handler of CLI commands 2024-03-28 17:28:20 +01:00
quic_conn.c OPTIM: quic: do not call qc_send() if nothing to emit 2024-04-10 11:17:21 +02:00
quic_fctl.c MINOR: mux-quic: define a flow control related type 2024-01-31 16:28:54 +01:00
quic_frame.c BUG/MINOR: quic: reject unknown frame type 2024-02-15 17:04:17 +01:00
quic_loss.c MINOR: quic: Add a counter for reordered packets 2024-02-14 11:32:29 +01:00
quic_openssl_compat.c BUG/MEDIUM: quic: keylog callback not called (USE_OPENSSL_COMPAT) 2024-01-16 10:17:27 +01:00
quic_retransmit.c REORG: quic: Add a new module for retransmissions 2023-11-28 15:47:18 +01:00
quic_retry.c BUG/MEDIUM: quic: don't blindly rely on unaligned accesses 2024-04-06 00:07:49 +02:00
quic_rx.c BUG/MEDIUM: quic: don't blindly rely on unaligned accesses 2024-04-06 00:07:49 +02:00
quic_sock.c BUG/MEDIUM: quic: fix connection freeze on post handshake 2024-03-06 10:39:57 +01:00
quic_ssl.c MEDIUM: ssl: allow to change the OpenSSL security level from global section 2024-03-12 17:37:11 +01:00
quic_stats.c MEDIUM: stats: Be able to access a specific field into a stats module 2024-02-01 12:00:53 +01:00
quic_stream.c MEDIUM: mux-quic: properly handle conn Tx buf exhaustion 2024-01-31 16:28:54 +01:00
quic_tls.c MINOR: quic: uniformize sending methods for handshake 2024-04-10 11:06:41 +02:00
quic_tp.c BUG/MEDIUM: quic: don't blindly rely on unaligned accesses 2024-04-06 00:07:49 +02:00
quic_trace.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
quic_tx.c OPTIM: quic: do not call qc_prep_pkts() if everything sent 2024-04-10 11:18:01 +02:00
raw_sock.c MEDIUM: raw-sock: Specifiy amount of data to send via snd_pipe callback 2023-10-17 18:51:13 +02:00
regex.c BUG/MINOR: regex: Properly handle PCRE2 lib compiled without JIT support 2022-09-01 19:34:46 +02:00
resolvers.c CLEANUP: Reapply ist.cocci (3) 2024-04-02 07:27:33 +02:00
ring.c CLEANUP: assorted typo fixes in the code and comments 2024-04-17 11:14:44 +02:00
sample.c BUG/MEDIUM: grpc: Fix several unaligned 32/64 bits accesses 2024-04-16 07:37:28 +02:00
server_state.c BUG/MINOR: server-state: Avoid warning on 'file not found' 2023-07-21 15:08:27 +02:00
server.c BUG/MINOR: server: fix slowstart behavior 2024-04-11 19:24:01 +02:00
session.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
sha1.c
shctx.c BUG/MINOR: shctx: Remove old HA_SPIN_INIT 2023-11-17 16:56:18 +01:00
signal.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
sink.c BUG/MAJOR: ring: free the ring storage not the ring itself when using maps 2024-03-26 15:15:59 +01:00
slz.c IMPORT: slz: implement a synchronous flush() operation 2023-06-30 16:12:36 +02:00
sock_inet.c MINOR: protocol: move the global reuseport flag to the protocols 2023-04-23 09:46:15 +02:00
sock_unix.c BUG/MINOR: sock: mark abns sockets as non-suspendable and always unbind them 2023-11-20 11:38:26 +01:00
sock.c BUG/MINOR: sock: handle a weird condition with connect() 2024-04-19 17:04:25 +02:00
ssl_ckch.c MEDIUM: ssl: crt-base and key-base local keywords for crt-store 2024-04-18 17:47:24 +02:00
ssl_crtlist.c MEDIUM: ssl: support aliases in crt-store 2024-04-17 17:24:49 +02:00
ssl_gencert.c MEDIUM: ssl: allow to change the OpenSSL security level from global section 2024-03-12 17:37:11 +01:00
ssl_ocsp.c MEDIUM: proxy/log: leverage lf_expr API for logformat preparsing 2024-04-04 19:10:01 +02:00
ssl_sample.c MINOR: ssl: implement keylog fetches for backend connections 2024-04-19 14:48:44 +02:00
ssl_sock.c MINOR: ssl: implement keylog fetches for backend connections 2024-04-19 14:48:44 +02:00
ssl_utils.c BUILD: ssl: ssl_c_r_dn fetches uses functiosn only available since 1.1.1 2023-05-15 12:07:52 +02:00
stats-html.c REORG: stats: extract HTML related functions 2024-04-18 17:04:08 +02:00
stats-json.c REORG: stats: extract JSON related functions 2024-04-18 17:04:08 +02:00
stats.c REORG: stats: extract JSON related functions 2024-04-18 17:04:08 +02:00
stconn.c MEDIUM: muxes: Use one callback function to shut a mux stream 2024-04-19 16:33:40 +02:00
stick_table.c BUG/MAJOR: stick-tables: fix race with peers in entry expiration 2024-04-12 18:00:13 +02:00
stream.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
systemd.c MEDIUM: mworker: get rid of libsystemd 2024-04-03 15:53:18 +02:00
task.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
tcp_act.c CLEANUP: Reapply strcmp.cocci (2) 2024-04-02 07:27:33 +02:00
tcp_rules.c MINOR: log/backend: prevent tcp-{request,response} use with LOG mode 2023-11-18 11:16:21 +01:00
tcp_sample.c MINOR: sample: accept_date / request_date return %Ts / %tr timestamp values 2023-07-24 17:12:29 +02:00
tcpcheck.c MEDIUM: tree-wide: add logformat expressions wrapper 2024-04-04 19:10:01 +02:00
thread.c MEDIUM: cache: Use dedicated cache tree lock alongside shctx lock 2023-11-16 19:35:10 +01:00
time.c
tools.c REORG: pool: move the area dump with symbol resolution to tools.c 2024-04-12 18:01:20 +02:00
trace.c MINOR: session: rename private conns elements 2024-03-14 15:21:02 +01:00
uri_auth.c
uri_normalizer.c
vars.c MAJOR: log: implement proper postparsing for logformat expressions 2024-04-04 19:10:01 +02:00
version.c
wdt.c BUG/MEDIUM: wdt: fix wrong thread being checked for sleeping 2023-02-17 16:01:34 +01:00
xprt_handshake.c
xprt_quic.c BUG/MEDIUM: quic: fix connection freeze on post handshake 2024-03-06 10:39:57 +01:00