haproxy/src
Christopher Faulet 4a78f766ff MEDIUM: applet: Add notion of shutdown for write for applets
In fact there is already flags on the SE to state a shutdown for reads or
writes was performed. But for applets, this notion does not exist. Both
flags are set in same time when the applet is released. But at the SC level,
there are functions to perform a shutdown (formely the shutw) and an abort
(formely the shutr). For applets, when a shutdown is performed on the SC, if
the applet is not immediately released, nothing is acknowledge at the SE
level.

With old way to implement applets, this was not an real issue until recently
because applets accessed to the channel/SC flags. It was thus possible to
catch the shutdowns. But the "wait" command on the CLI reveals the
flaw. Indeed, when this command is executed, nothing is read or sent. So, it
is not possible to detect the shutdowns. As a workaround, a dedicated test
on the SC flags was added at the end of the wait command I/O handler. But it
is pretty ugly.

With new way to implement applets, there is no longer access to the channel
or SC. So we must add a way to acknowledge shutdown into the SE.

This patch solves the both sides of the issue. The shutw notion is added for
applets. Its only purpose is to set SE_FL_SHWN flags. This flag is tested by
all applets, so, it solves the issue quite simply.

Note that it is described as a bug fix but there is no real issue, just a
design flaw. However, if the "wait" command is backported, this patch must
be backported too. Unfortinately it will require an adaptation because there
is no appctx flags on older versions.
2024-02-14 14:22:36 +01: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 MINOR: activity: report profiling duration and age in "show profiling" 2023-11-14 11:46:37 +01:00
applet.c MEDIUM: applet: Add notion of shutdown for write for applets 2024-02-14 14:22:36 +01:00
arg.c
auth.c
backend.c MEDIUM: tcp-act/backend: support for set-bc-{mark,tos} actions 2024-02-01 10:58:30 +01:00
base64.c
cache.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01: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 BUG/MINOR: ext-check: cannot use without preserve-env 2023-12-08 14:26:06 +01:00
cfgparse-listen.c BUG/MINOR: cfgparse-listen: fix warning being reported as an alert 2023-12-01 09:09:45 +01:00
cfgparse-quic.c MINOR: quic: Dynamic packet reordering threshold 2024-02-14 11:32:29 +01:00
cfgparse-ssl.c MEDIUM: ssl: implements 'default-crt' keyword for bind Lines 2024-01-12 17:40:42 +01: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/MINOR: server: fix server_find_by_name() usage during parsing 2024-01-02 15:52:47 +01: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 CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
chunk.c MEDIUM: init: initialize the trash earlier 2023-09-08 16:25:19 +02:00
cli.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01: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: tcp-act/backend: support for set-bc-{mark,tos} actions 2024-02-01 10:58:30 +01:00
cpuset.c REORG: cpuset: move parse_cpu_set() and parse_cpumap() to cpuset.c 2023-09-08 16:25:19 +02:00
debug.c BUILD: address a few remaining calloc(size, n) cases 2024-02-10 11:37:27 +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.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01: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/MINOR: diag: always show the version before dumping a diag warning 2024-02-03 12:08:11 +01:00
ev_epoll.c
ev_evports.c
ev_kqueue.c
ev_poll.c
ev_select.c
event_hdl.c MINOR: event_hdl: add global tunables 2023-11-29 08:59:27 +01:00
extcheck.c MINOR: ext-check: add an option to preserve environment variables 2023-11-23 16:53:57 +01:00
fcgi-app.c CLEANUP: log: deinitialization of the log buffer in one function 2024-01-30 08:27:26 +01:00
fcgi.c
fd.c BUG/MEDIUM: fd: don't wait for tmask to stabilize if we're not in it. 2023-04-13 18:04:46 +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 CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01: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 MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01: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 MINOR: frontend: implement a dedicated actconn increment function 2023-10-26 15:18:48 +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 MINOR: quic: Dynamic packet reordering threshold 2024-02-14 11:32:29 +01:00
hash.c
hlua_fcn.c MEDIUM: server: make server_set_inetaddr() updater serializable 2023-12-21 14:22:27 +01:00
hlua.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01:00
hpack-dec.c
hpack-enc.c
hpack-huff.c
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 CLEANUP: log: deinitialization of the log buffer in one function 2024-01-30 08:27:26 +01:00
http_ana.c MEDIUM: http_act: check status codes against the bit fields for err/fail 2024-01-11 15:10:08 +01:00
http_client.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01:00
http_conv.c
http_ext.c BUG/MINOR: http_ext: unhandled ERR_ABORT in proxy_http_parse_7239() 2023-07-06 15:41:17 +02:00
http_fetch.c MINOR: http-fetch: Add a sample to get the transaction status code 2023-11-29 11:11:12 +01:00
http_htx.c CLEANUP: log: deinitialization of the log buffer in one function 2024-01-30 08:27:26 +01:00
http_rules.c CLEANUP: log: deinitialization of the log buffer in one function 2024-01-30 08:27:26 +01: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
lb_chash.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
lb_fas.c
lb_fwlc.c
lb_fwrr.c
lb_map.c
linuxcap.c MEDIUM: capabilities: enable support for Linux capabilities 2023-08-29 11:11:50 +02:00
listener.c MINOR: rhttp: mark reverse HTTP as experimental 2023-11-30 15:04:27 +01:00
log.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01:00
lru.c
mailers.c MINOR: mailers/hlua: disable email sending from lua 2023-05-05 16:28:32 +02:00
map.c MINOR: map: add map_*_key converters to provide the matching key 2023-12-21 14:22:27 +01:00
mjson.c BUILD: mjson: Fix warning about unused variables 2023-05-11 09:22:46 +02:00
mqtt.c
mux_fcgi.c MINOR: muxes: Implement ->sctl() callback for muxes and return the stream id 2023-11-29 11:11:12 +01:00
mux_h1.c BUG/MAJOR: mux-h1: Fix zero-copy forwarding when sending chunks of unknown size 2024-02-14 14:22:36 +01:00
mux_h2.c MEDIUM: mux-h2: update session trackers with number of glitches 2024-02-08 15:51:49 +01:00
mux_pt.c MINOR: stconn: Add support for flags during zero-copy forwarding negotiation 2024-02-07 15:04:29 +01:00
mux_quic.c MINOR: stconn: Add support for flags during zero-copy forwarding negotiation 2024-02-07 15:04:29 +01:00
mworker-prog.c MEDIUM: clock: replace timeval "now" with integer "now_ns" 2023-04-28 16:08:08 +02:00
mworker.c MINOR: mworker/cli: implement hard-reload over the master CLI 2023-11-24 21:44:25 +01: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: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01:00
pipe.c
pool.c BUG/MEDIUM: pool: fix rare risk of deadlock in pool_flush() 2024-02-10 12:38:40 +01:00
proto_quic.c CLEANUP: Re-apply xalloc_size.cocci (3) 2023-11-06 20:49:56 +01: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
proto_uxst.c MINOR: proto: skip socket setup for duped FDs 2023-04-21 17:41:26 +02:00
protocol.c MINOR: quic+openssl_compat: Do not start without "limited-quic" 2023-08-17 15:44:03 +02:00
proxy.c CLEANUP: log: deinitialization of the log buffer in one function 2024-01-30 08:27:26 +01: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: mux-quic: fix transport VS app CONNECTION_CLOSE 2023-05-09 18:42:34 +02:00
qpack-enc.c BUG/MEDIUM: qpack: allow 6xx..9xx status codes 2024-01-29 15:40:19 +01:00
qpack-tbl.c
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 MINOR: quic: Update K CUBIC calculation (RFC 9438) 2024-02-12 13:44:42 +01:00
quic_cc_newreno.c REORG: quic: Move QUIC path definitions/declarations to quic_cc module 2023-11-28 15:37:50 +01: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
quic_cid.c CLEANUP: quic_cid: remove unused listener arg 2023-11-30 15:04:27 +01:00
quic_cli.c MINOR: quic: Add a counter for reordered packets 2024-02-14 11:32:29 +01:00
quic_conn.c REORG: quic: Move quic_increment_curr_handshake() to quic_sock 2023-11-28 15:47:18 +01:00
quic_fctl.c MINOR: mux-quic: define a flow control related type 2024-01-31 16:28:54 +01:00
quic_frame.c MEDIUM: quic: Heavy task mode during handshake 2023-11-09 10:32:31 +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 REORG: quic: Add a new module for QUIC retry 2023-11-28 15:47:18 +01:00
quic_rx.c BUG/MEDIUM: quic: QUIC CID removed from tree without locking 2023-12-13 14:42:50 +01:00
quic_sock.c REORG: quic: Move the QUIC DCID parser to quic_sock.c 2023-11-28 15:37:50 +01:00
quic_ssl.c MEDIUM: ssl/quic: always compile the ssl_conf.early_data test 2024-01-31 11:57:54 +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 BUG/MEDIUM: quic: remove unsent data from qc_stream_desc buf 2024-01-26 16:02:05 +01:00
quic_tp.c MINOR: quic: Transport parameters encoding without version_information 2024-01-23 16:03:29 +01:00
quic_trace.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
quic_tx.c REORG: quic: Add a new module for retransmissions 2023-11-28 15:47:18 +01: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
resolvers.c MAJOR: stats: Send stats dump over HTTP using zero-copy forwarding 2024-02-07 15:04:48 +01:00
ring.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
sample.c MINOR: sample: implement bc_{be,srv}_queue samples 2024-02-08 09:39:23 +01:00
server_state.c BUG/MINOR: server-state: Avoid warning on 'file not found' 2023-07-21 15:08:27 +02:00
server.c MINOR: server: split the server deletion code in two parts 2024-02-09 20:38:08 +01:00
session.c MINOR: session: add the necessary functions to update the per-session glitches 2024-02-08 15:51:49 +01: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 MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +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 MEDIUM: tcp-act/backend: support for set-bc-{mark,tos} actions 2024-02-01 10:58:30 +01:00
ssl_ckch.c BUG/MINOR: ssl: Destroy ckch instances before the store during deinit 2024-02-07 17:10:31 +01:00
ssl_crtlist.c BUG/MINOR: ssl: Clear the ckch instance when deleting a crt-list line 2024-02-07 17:10:00 +01:00
ssl_gencert.c REORG: ssl: move 'generate-certificates' code to ssl_gencert.c 2024-01-12 17:40:42 +01:00
ssl_ocsp.c BUG/MEDIUM: ssl: Fix crash when calling "update ssl ocsp-response" when an update is ongoing 2024-02-12 11:15:45 +01:00
ssl_sample.c CLEANUP: ssl: fix indentation in smp_fetch_ssl_fc_ec() (part 2) 2024-01-09 17:27:31 +01:00
ssl_sock.c BUG/MINOR: ssl: Reenable ocsp auto-update after an "add ssl crt-list" 2024-02-07 17:10:49 +01: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.c MINOR: applet: Remove uselelss test on SE_FL_SHR/SHW flags 2024-02-14 14:22:36 +01:00
stconn.c MEDIUM: applet: Add notion of shutdown for write for applets 2024-02-14 14:22:36 +01:00
stick_table.c MEDIUM: stick-tables: add a new stored type for glitch_cnt and glitch_rate 2024-02-08 15:51:49 +01:00
stream.c MINOR: stream: rename "txn.redispatch" to "txn.redispatched" 2024-02-08 09:39:14 +01:00
task.c CLEANUP: assorted typo fixes in the code and comments 2023-11-23 16:23:14 +01:00
tcp_act.c MEDIUM: tcp-act/backend: support for set-bc-{mark,tos} actions 2024-02-01 10:58:30 +01: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 CLEANUP: log: deinitialization of the log buffer in one function 2024-01-30 08:27:26 +01: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 BUG/MEDIUM: cli: some err/warn msg dumps add LR into CSV output on stat's CLI 2024-01-24 08:38:59 +01:00
trace.c MINOR: trace: support -dt optional format 2023-11-27 17:15:14 +01:00
uri_auth.c
uri_normalizer.c
vars.c BUG/MINOR: vars/cli: fix missing LF after "get var" output 2024-02-08 18:22:01 +01:00
version.c
wdt.c
xprt_handshake.c
xprt_quic.c BUG/MAJOR: quic: complete thread migration before tcp-rules 2023-11-20 16:11:26 +01:00