haproxy/src
Amaury Denoyelle bf76275fff BUG/MEDIUM: mux_quic: complete stream shutdown for read channel
Prior to this patch, shut stream callback only handles write channel
closure. In case of an early closure, a RESET_STREAM would be emitted.

On the frontend side in most cases this is sufficient as read channel is
already closed, as HTTP/3 GET requests has been fully received. However,
this may not be the case for POST requests. Also, on the backend side,
haproxy acts a client. In this case, a stream early closure will
typically happen before receiving the full response. Nothing will be
emitted (RESET_STREAM is unnecessary as write channel is already
closed), thus the server peer will continue to emit.

To fix this situation, the current patch implement read channel closure
on shut if SE_SHR_RESET is set. Callback lclose from app_ops is called
with a new dedicated mode for read channel closure, which will result in
a STOP_SENDING frame generated by H3 and hq transcoders. This will
instruct the peer to stop emission.

This should be backported up to 3.3. Note that this depends on the
following patch :
  dde3ee06c30f20091443bdafdda0e0294f7ac26b
  MINOR: mux_quic: use separate error code for STOP_SENDING
2026-07-06 10:19:12 +02:00
..
_ceb_addr.c
_ceb_blk.c
_ceb_int.c
_ceb_str.c
acl.c CLEANUP: acl: remove duplicate test in parse_acl_expr() and unused variable 2026-04-30 17:39:26 +02:00
acme.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
acme_resolvers.c MINOR: acme: extend resolver-based DNS pre-check to dns-persist-01 2026-04-13 18:45:08 +02:00
action.c
activity.c MINOR: memprof: be careful to account allocations only once 2026-06-08 13:46:18 +02:00
applet.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
arg.c
auth.c BUG/MEDIUM: auth: fix unconfigured password NULL deref 2026-05-26 14:13:23 +02:00
backend.c BUG/MINOR: sample: set SMP_F_CONST on srv_name fetch 2026-07-01 09:11:18 +02:00
base64.c BUG/MINOR: base64: return empty string for empty input in base64dec() 2026-05-26 13:13:24 +02:00
buf.c CLEANUP: tree-wide: fix typos in non user-visible comments in 3 more files 2026-05-12 17:07:55 +02:00
cache.c BUILD: makefile: add an option to enable or disable FCGI (USE_FCGI) 2026-07-03 16:33:27 +02:00
calltrace.c
ceb32_tree.c
ceb64_tree.c
ceba_tree.c
cebb_tree.c
cebib_tree.c
cebis_tree.c
cebl_tree.c
cebs_tree.c
cebtree-dbg.c
cebtree-prv.h
cfgcond.c BUG/MINOR: cfgcond: make KQUEUE check for GTUNE_USE_KQUEUE not GTUNE_USE_EPOLL 2026-05-11 16:04:19 +02:00
cfgdiag.c
cfgparse-global.c MINOR: config: shm-stats-file is no longer experimental 2026-05-21 08:50:20 +02:00
cfgparse-listen.c BUILD: makefile: add an option to enable or disable SPOE (USE_SPOE) 2026-07-03 16:33:27 +02:00
cfgparse-peers.c MINOR: errors: remove excessive errmsg checks 2026-04-13 15:39:05 +02:00
cfgparse-quic.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
cfgparse-ssl.c MINOR: ssl: export ssl_sock_init_srv() 2026-06-26 17:25:50 +02:00
cfgparse-tcp.c
cfgparse-unix.c
cfgparse.c CLEANUP: trace/config: do not register section "traces" with USE_TRACE=0 2026-07-03 16:32:28 +02:00
channel.c CLEANUP: tree-wide: fix typos in non user-visible comments in 15 files 2026-05-11 16:01:50 +02:00
check.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
chunk.c BUG/MEDIUM: chunk: do not rely on small trash by default for expressions 2026-06-03 14:45:54 +02:00
cli.c MEDIUM: cli/show-fd: no longer accept filtering for dispatch mode 2026-06-26 10:53:51 +02:00
clock.c
compression.c MINOR: compression: prefix compression oriented functions with "comp_" 2026-04-17 08:26:56 +02:00
connection.c CLEANUP: connection: remove some checks for objt_proxy(conn->target) 2026-06-26 11:09:34 +02:00
counters.c
cpu_topo.c BUG/MINOR: cpu-topo: use ha_diag_notice() to report thread creations 2026-06-11 18:49:57 +02:00
cpuset.c CLEANUP: src/cpuset.c: fix missing return in functions returning int 2026-05-12 08:55:19 +02:00
debug.c CLEANUP: debug/trace: remote "debug dev trace" when USE_TRACE is not set 2026-07-03 16:32:28 +02:00
dgram.c
dict.c BUG/MINOR: dict: fix refcount race on insert collision 2026-05-25 10:52:42 +02:00
dns.c CLEANUP: address a few typos and copy-paste errors in httpclient and dns 2026-05-15 18:25:13 +02:00
dns_ring.c
dynbuf.c
eb32sctree.c
eb32tree.c
eb64tree.c
ebimtree.c
ebistree.c
ebmbtree.c
ebsttree.c
ebtree.c
ech.c
errors.c MINOR: errors: add ha_diag_notice() to report diag-level notifications 2026-06-11 18:48:59 +02:00
ev_epoll.c
ev_evports.c
ev_kqueue.c
ev_poll.c
ev_select.c
event_hdl.c MEDIUM: server: add 'set server name' CLI command for runtime server renaming 2026-07-01 09:31:07 +02:00
extcheck.c MINOR: mux: Rename the "token" from mux_proto_list to mux_proto 2026-05-19 18:33:54 +02:00
fcgi-app.c MINOR: mux: Rename the "token" from mux_proto_list to mux_proto 2026-05-19 18:33:54 +02:00
fcgi.c
fd.c BUG/MINOR: poller: fix wait time calculation that is always 1 extra ms 2026-06-24 18:01:33 +02:00
filters.c CLEANUP: Reapply strcmp.cocci (3) 2026-04-29 04:39:12 +02:00
fix.c
flt_bwlim.c
flt_http_comp.c BUILD: makefile: add an option to enable or disable FCGI (USE_FCGI) 2026-07-03 16:33:27 +02:00
flt_spoe.c
flt_trace.c
freq_ctr.c
frontend.c CLEANUP: tree-wide: address various spelling mistakes in comments from -dev7 2026-04-27 10:50:12 +02:00
guid.c
h1.c MINOR: h1: Add a H1M flag to specify a non-empty 'Upgrade:' header was parsed 2026-05-26 18:28:07 +02:00
h1_htx.c BUG/MEDIUM: h1-htx: Sanitize parsing to properly handle upgrade requests 2026-05-26 18:28:07 +02:00
h2.c BUG/MINOR: h2: only accept :protocol with extended CONNECT 2026-05-05 14:10:36 +02:00
h3.c BUG/MEDIUM: mux_quic: complete stream shutdown for read channel 2026-07-06 10:19:12 +02:00
h3_stats.c
haload.c MINOR: haload: import source code and documentation 2026-07-01 15:22:14 +02:00
haload_init.c MINOR: haload: import source code and documentation 2026-07-01 15:22:14 +02:00
haproxy.c CLEANUP: haproxy: remove -dt parsing and help when !USE_TRACE 2026-07-03 16:32:28 +02:00
hash.c
haterm.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
haterm_init.c BUG/MINOR: init: fix default global settings being overwritten by -G 2026-07-02 13:55:49 +02:00
hbuf.c MINOR: hbuf: new lightweight hbuf API 2026-07-01 15:22:14 +02:00
hlua.c BUG/MEDIUM: hlua: Properly report EOS when http applet exits 2026-06-22 10:55:22 +02:00
hlua_fcn.c
hpack-dec.c
hpack-enc.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
hpack-huff.c
hpack-tbl.c BUG/MINOR: hpack-tbl: add missing NULL check after hpack_dht_defrag() 2026-06-16 17:03:14 +02:00
hq_interop.c BUG/MEDIUM: mux_quic: complete stream shutdown for read channel 2026-07-06 10:19:12 +02:00
http.c
http_acl.c
http_act.c BUG/MEDIUM: http-act: Make a copy of the sample expr in (set/add)-headers-bin 2026-06-16 18:03:01 +02:00
http_ana.c BUG/MEDIUM: http-ana: Don't ignore L7 retry errors 2026-06-15 08:55:56 +02:00
http_client.c CLEANUP: applet/http-client: Don't needlessly copy HTX flags after htx_xfer() 2026-07-02 17:03:54 +02:00
http_conv.c BUG/MINOR: sample: request an extra output byte for the url_dec converter 2026-05-26 13:13:24 +02:00
http_ext.c BUG/MINOR: http-ext: always check remaining data when reading rfc7239 nodeport 2026-05-26 13:13:24 +02:00
http_fetch.c BUG/MINOR: http-fetch: check against the whole token in get_http_auth() 2026-05-26 13:13:24 +02:00
http_htx.c BUG/MINOR: http-htx: Don't by-pass HTX API when merging cookie values 2026-07-02 17:03:54 +02:00
http_rules.c
httpclient_cli.c BUG/MINOR: httpclient-cli: fix uninit variable in error label 2026-05-19 18:33:13 +02:00
htx.c BUG/MEDIUM: htx: Fix headers rollback on partial copy in htx_xfer() 2026-06-01 09:59:33 +02:00
init.c
jwe.c BUG/MINOR: jwe: don't write randoms past MAX_DECRYPTED_CEK_LEN in RSA_PKCS1_PADDING 2026-06-03 14:45:54 +02:00
jws.c BUG/MINOR: jws: Add missing return value check (EVP_PKEY_get_bn_param) 2026-05-19 15:21:26 +02:00
jwt.c BUG/MINOR: jwt: fix possible memory leak in convert_ecdsa_sig() error path 2026-05-18 18:50:30 +02:00
lb_chash.c MINOR: backend: support hash-key guid for a stabler distribution 2026-05-19 19:11:25 +02:00
lb_fas.c MINOR: lb: make LB initialization even more declarative 2026-05-11 08:50:40 +02:00
lb_fwlc.c BUG/MEDIUM: leastconn: Unlock the write lock on allocation failure 2026-06-01 16:08:45 +02:00
lb_fwrr.c MINOR: lb: make LB initialization even more declarative 2026-05-11 08:50:40 +02:00
lb_map.c MINOR: lb: make LB initialization even more declarative 2026-05-11 08:50:40 +02:00
lb_ss.c MINOR: lb: make LB initialization even more declarative 2026-05-11 08:50:40 +02:00
limits.c BUG/MEDIUM: limits: properly account for global.maxpipes in compute_ideal_maxconn() 2026-05-19 15:19:23 +02:00
linuxcap.c
listener.c
log.c MINOR: log: add app_log_raw() and send_log_raw() for binary-safe logging 2026-07-01 23:51:17 +02:00
lru.c
mailers.c
map.c BUG/MINOR: acl: report "ACL" not "map" in ACL ID lookup failures 2026-06-08 13:45:39 +02:00
mjson.c CLEANUP: tree-wide: address various spelling mistakes in comments from -dev7 2026-04-27 10:50:12 +02:00
mpring.c MINOR: add an MPSC ring buffer implementation 2026-04-30 15:33:07 +02:00
mqtt.c CLEANUP: mqtt: fix spelling of shared_subscription_available 2026-05-11 17:28:21 +02:00
mux_fcgi.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
mux_h1.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
mux_h2.c CLEANUP: mux-h2/traces: remove unused trace code when building without USE_TRACE 2026-07-03 16:32:28 +02:00
mux_pt.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
mux_quic.c BUG/MEDIUM: mux_quic: complete stream shutdown for read channel 2026-07-06 10:19:12 +02:00
mux_spop.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
mworker.c MEDIUM: tools: switch the main PRNG to a thread-local xoshiro256** 2026-05-26 13:13:24 +02:00
namespace.c
ncbmbuf.c CLEANUP: ncbmbuf: improve handling of memory allocation errors in unit tests 2026-05-31 10:29:49 +02:00
ncbuf.c
net_helper.c BUG/MEDIUM: net_helper: fix a remaining possibly infinite loop in converters 2026-05-21 15:05:39 +02:00
pattern.c BUG/MINOR: pattern: release the reference on failure to load from file 2026-04-30 17:39:26 +02:00
payload.c BUG/MINOR: payload: fix the handshake length bounds check smp_client_hello_parse() 2026-05-26 13:13:24 +02:00
peers.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
pipe.c
pool.c MINOR: pools: reject creation of pools containing invalid chars in their name 2026-06-08 08:54:37 +02:00
proto_quic.c CLEANUP: backend: drop checks for OBJ_TYPE_PROXY in connect() code 2026-06-26 11:09:34 +02:00
proto_rhttp.c MINOR: mux: Rename the "token" from mux_proto_list to mux_proto 2026-05-19 18:33:54 +02:00
proto_sockpair.c
proto_tcp.c CLEANUP: backend: drop checks for OBJ_TYPE_PROXY in connect() code 2026-06-26 11:09:34 +02:00
proto_udp.c
proto_uxdg.c
proto_uxst.c CLEANUP: backend: drop checks for OBJ_TYPE_PROXY in connect() code 2026-06-26 11:09:34 +02:00
protocol.c CLEANUP: tree-wide: fix more typos and outdated explanations in comments 2026-05-13 11:24:27 +02:00
proxy.c MINOR: server: distinguish name references with new SRV_F_NAME_REFD flag 2026-07-01 09:11:18 +02:00
qcm_http.c BUG/MINOR: mux-quic: Fix handling EOM after in qcs_http_rcv_buf() 2026-07-02 17:03:54 +02:00
qcm_qmux.c BUG/MEDIUM: qmux: Close connection on invalid frame 2026-06-01 08:59:02 +02:00
qcm_trace.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
qpack-dec.c CLEANUP: qpack: move encoded macros to qpack-t.h to avoid duplication 2026-05-27 18:40:53 +02:00
qpack-enc.c CLEANUP: qpack: move encoded macros to qpack-t.h to avoid duplication 2026-05-27 18:40:53 +02:00
qpack-tbl.c BUG/MINOR: qpack: fix potential null-pointer dereference in qpack_dht_insert() 2026-05-27 18:40:53 +02:00
queue.c CLEANUP: tree-wide: fix more typos and outdated explanations in comments 2026-05-13 11:24:27 +02:00
quic_ack.c BUG/MINOR: quic: fix ack range node pool_free call passing wrong pointer type 2026-05-28 17:47:31 +02:00
quic_cc.c
quic_cc_bbr.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
quic_cc_cubic.c BUG/MEDIUM: quic: reset consecutive_losses on exit from recovery period (cubic) 2026-05-28 17:47:31 +02:00
quic_cc_drs.c
quic_cc_newreno.c
quic_cc_nocc.c
quic_cid.c BUG/MINOR: quic: fix ODCID lookup from derived value 2026-05-22 16:03:10 +02:00
quic_cli.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
quic_conn.c BUG/MEDIUM: quic: handle ECONNREFUSED on RX side 2026-05-28 07:28:41 +02:00
quic_enc.c
quic_fctl.c
quic_frame.c BUG/MINOR: trace/quic_frame: use buf, not trace_buf in chunk_frm_appendf() 2026-07-03 16:32:28 +02:00
quic_loss.c CLEANUP: traces: get rid of a few rare empty args in TRACE calls 2026-07-03 16:32:28 +02:00
quic_openssl_compat.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
quic_pacing.c BUILD: quic_pacing: add missing includes for api and activity in the file 2026-06-24 18:01:33 +02:00
quic_retransmit.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
quic_retry.c OPTIM: quic: reduce the size of struct quic_dgram 2026-04-30 15:33:07 +02:00
quic_rules.c OPTIM: quic: reduce the size of struct quic_dgram 2026-04-30 15:33:07 +02:00
quic_rx.c BUG/MINOR: quic: Fix another buffer overflow with sockaddr_in46 2026-05-29 15:36:43 +02:00
quic_sock.c BUG/MEDIUM: quic: handle ECONNREFUSED on RX side 2026-05-28 07:28:41 +02:00
quic_ssl.c BUILD: traces: set a few __maybe_unused on vars used only for traces 2026-05-20 11:46:43 +02:00
quic_stats.c
quic_stream.c CLEANUP: tree-wide: fix comment typos all over the tree (~68) 2026-04-29 15:11:44 +02:00
quic_tls.c Revert "MEDIUM: quic: optimize HKDF operations by reusing per-thread contexts" 2026-05-28 18:15:19 +02:00
quic_token.c MEDIUM: quic: use ha_random64_pair_hashed() to generate the QUIC retry tokens 2026-05-26 13:13:24 +02:00
quic_tp.c BUILD: quic: workaround a gcc bug saying "maybe used uninitialized" when USE_TRACE=0 2026-07-03 16:32:28 +02:00
quic_trace.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
quic_tx.c BUG/MINOR: quic: fix Initial length value in sent packets 2026-06-09 15:42:33 +02:00
raw_sock.c CLEANUP: tree-wide: fix more typos and outdated explanations in comments 2026-05-13 11:24:27 +02:00
regex.c BUG/MEDIUM: regex: initialize the match array earlier during boot 2026-06-07 07:46:32 +02:00
resolvers.c BUG/MEDIUM: resolvers: Wait a bit before calling the xprt prepare_srv 2026-05-29 19:20:23 +02:00
ring.c
sample.c MINOR: server: distinguish name references with new SRV_F_NAME_REFD flag 2026-07-01 09:11:18 +02:00
server.c MINOR: server: export functions used during server initialization 2026-07-01 15:22:14 +02:00
server_state.c
session.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
sha1.c
shctx.c
signal.c
sink.c BUG/MINOR: sink: do not free existing sinks on allocation error 2026-04-30 08:01:24 +02:00
slz.c
sock.c CLEANUP: tree-wide: use array_size_or_fail() in array size for allocations 2026-05-20 17:05:19 +02:00
sock_inet.c
sock_unix.c
ssl_ckch.c CLEANUP: tree-wide: use array_size_or_fail() in array size for allocations 2026-05-20 17:05:19 +02:00
ssl_clienthello.c BUG/MINOR: ssl-hello: make use of the null-terminated servername 2026-05-26 13:13:24 +02:00
ssl_crtlist.c
ssl_gencert.c BUG/MINOR: ssl-gencert: validate SNI characters to prevent SAN certificate injection 2026-05-27 10:20:55 +02:00
ssl_ocsp.c BUG/MINOR: ocsp: Manage date too far away in the future 2026-05-21 15:43:49 +02:00
ssl_sample.c BUG/MEDIUM: ssl/sample: check output buffer size in aes_cbc_enc converter 2026-05-04 17:38:15 +02:00
ssl_sock.c BUILD: ssl: avoid a wrong null deref warning in ssl_sock_handshake 2026-07-03 16:32:28 +02:00
ssl_trace.c
ssl_utils.c
stats-file.c CLEANUP: tree-wide: use array_size_or_fail() in array size for allocations 2026-05-20 17:05:19 +02:00
stats-html.c
stats-json.c
stats-proxy.c CLEANUP: tree-wide: fix typos in non user-visible comments in 15 files 2026-05-11 16:01:50 +02:00
stats.c CLEANUP: tree-wide: use array_size_or_fail() in array size for allocations 2026-05-20 17:05:19 +02:00
stconn.c MINOR: haload: import source code and documentation 2026-07-01 15:22:14 +02:00
stick_table.c CLEANUP: tree-wide: use array_size_or_fail() in array size for allocations 2026-05-20 17:05:19 +02:00
stream.c CLEANUP: trace/tree-wide: drop trace decoding/definition when USE_TRACE=0 2026-07-03 16:32:28 +02:00
systemd.c
task.c MEDIUM: task: add a new tasklet class for real-time: TL_RT 2026-06-25 10:54:07 +02:00
tcp_act.c
tcp_rules.c
tcp_sample.c
tcpcheck.c BUILD: makefile: add an option to enable or disable SPOE (USE_SPOE) 2026-07-03 16:33:27 +02:00
thread.c MINOR: tasks: Remove wq_lock and the per-thread group wait queues 2026-06-12 11:49:09 +02:00
time.c
tools.c BUG/MINOR: tools: fix invalid character detection in strl2ic() 2026-07-02 16:02:49 +02:00
trace.c MINOR: trace: add definitions for haload streams 2026-07-01 15:22:14 +02:00
uri_auth.c BUG/MINOR: uri-auth: fix possible null-deref in latest fix for leaks 2026-05-11 16:33:44 +02:00
uri_normalizer.c
vars.c BUG/MEDIUM: vars: Properly eval set-var-fmt action for emtpy log-format string 2026-06-03 12:05:56 +02:00
version.c
wdt.c CLEANUP: tree-wide: fix more typos and outdated explanations in comments 2026-05-13 11:24:27 +02:00
xprt_handshake.c
xprt_qmux.c BUG/MEDIUM: xprt_qmux: implement ->get_ssl_sock_ctx() to get the SSL laye 2026-06-08 08:31:20 +02:00
xprt_quic.c CLEANUP: tree-wide: fix typos in non user-visible comments in 3 more files 2026-05-12 17:07:55 +02:00