Changes since version 2.8-dev4 : Amaury Denoyelle (14): MINOR: h3/hq-interop: handle no data in decode_qcs() with FIN set BUG/MINOR: mux-quic: transfer FIN on empty STREAM frame MINOR: h3: add traces on decode_qcs callback MINOR: quic: adjust request reject when MUX is already freed BUG/MINOR: quic: also send RESET_STREAM if MUX released BUG/MINOR: quic: acknowledge STREAM frame even if MUX is released BUG/MINOR: h3: prevent hypothetical demux failure on int overflow MEDIUM: h3: enforce GOAWAY by resetting higher unhandled stream MINOR: mux-quic: define qc_shutdown() MINOR: mux-quic: define qc_process() MINOR: mux-quic: implement client-fin timeout MEDIUM: mux-quic: properly implement soft-stop MINOR: quic: mark quic-conn as jobs on socket allocation MEDIUM: quic: trigger fast connection closing on process stopping Aurelien DARRAGON (19): BUG/MINOR: lua/httpclient: missing free in hlua_httpclient_send() BUG/MEDIUM: httpclient/lua: fix a race between lua GC and hlua_ctx_destroy BUG/MINOR: proto_ux: report correct error when bind_listener fails BUG/MINOR: protocol: fix minor memory leak in protocol_bind_all() MINOR: proto_uxst: add resume method MINOR: listener/api: add lli hint to listener functions MINOR: listener: add relax_listener() function MINOR: listener: workaround for closing a tiny race between resume_listener() and stopping MINOR: listener: make sure we don't pause/resume bypassed listeners BUG/MEDIUM: listener: fix pause_listener() suspend return value handling BUG/MINOR: listener: fix resume_listener() resume return value handling BUG/MEDIUM: resume from LI_ASSIGNED in default_resume_listener() MINOR: listener: pause_listener() becomes suspend_listener() BUG/MEDIUM: listener/proxy: fix listeners notify for proxy resume BUG/MINOR: sock_unix: match finalname with tempname in sock_unix_addrcmp() MEDIUM: proto_ux: properly suspend named UNIX listeners MINOR: proto_ux: ability to dump ABNS names in error messages MINOR: haproxy: always protocol unbind on startup error path BUG/MEDIUM: fd: avoid infinite loops in fd_add_to_fd_list and fd_rm_from_fd_list Christopher Faulet (44): BUG/MEDIUM: http-ana: Detect closed SC on opposite side during body forwarding BUG/MEDIUM: stconn: Don't rearm the read expiration date if EOI was reached MINOR: global: Add an option to disable the data fast-forward MINOR: haproxy: Add an command option to disable data fast-forward REGTESTS: Remove unsupported feature command in http_splicing.vtc DEBUG: stream: Add a BUG_ON to never exit process_stream with an expired task DOC: config: Fix description of options about HTTP connection modes MINOR: proxy: Only consider backend httpclose option for server connections BUG/MINOR: haproxy: Fix option to disable the fast-forward DOC: config: Add the missing tune.fail-alloc option from global listing MINOR: cfgcond: Implement strstr condition expression MINOR: cfgcond: Implement enabled condition expression REGTESTS: Skip http_splicing.vtc script if fast-forward is disabled REGTESTS: Fix ssl_errors.vtc script to wait for connections close MEDIUM: channel: Remove CF_READ_NOEXP flag MAJOR: channel: Remove flags to report READ or WRITE errors DEBUG: stream/trace: Add sedesc flags in trace messages MINOR: channel/stconn: Move rto/wto from the channel to the stconn MEDIUM: channel/stconn: Move rex/wex timer from the channel to the sedesc MEDIUM: stconn: Don't requeue the stream's task after I/O MEDIUM: stconn: Replace read and write timeouts by a unique I/O timeout MEDIUM: stconn: Add two date to track successful reads and blocked sends MINOR: applet/stconn: Add a SE flag to specify an endpoint does not expect data MAJOR: stream: Use SE descriptor date to detect read/write timeouts MINOR: stream: Dump the task expiration date in trace messages MINOR: stream: Report rex/wex value using the sedesc date in trace messages MINOR: stream: Use relative expiration date in trace messages MINOR: stconn: Always report READ/WRITE event on shutr/shutw CLEANUP: stconn: Remove old read and write expiration dates MINOR: stconn: Set half-close timeout using proxy settings MINOR: stconn: Remove half-closed timeout REGTESTS: cache: Use rxresphdrs to only get headers for 304 responses MINOR: stconn: Add functions to set/clear SE_FL_EXP_NO_DATA flag from endpoint BUG/MEDIUM: h1-htx: Never copy more than the max data allowed during parsing BUG/MINOR: stream: Remove BUG_ON about the task expiration in process_stream() MINOR: stream: Handle stream's timeouts in a dedicated function MEDIUM: stream: Eventually handle stream timeouts when exiting process_stream() MINOR: stconn: Report a send activity when endpoint is willing to consume data BUG/MEDIUM: stconn: Report a blocked send if some output data are not consumed MEDIUM: mux-h1: Don't expect data from server as long as request is unfinished MEDIUM: mux-h2: Don't expect data from server as long as request is unfinished MEDIUM: mux-quic: Don't expect data from server as long as request is unfinished DOC: config: Clarify the meaning of 'hold' in the 'resolvers' section DOC: config: Replace TABs by spaces Frédéric Lécaille (18): BUG/MINOR: quic: Possible unexpected counter incrementation on send*() errors MINOR: quic: Add new traces about by connection RX buffer handling MINOR: quic: Move code to wakeup the timer task to avoid anti-amplication deadlock BUG/MINOR: quic: Really cancel the connection timer from qc_set_timer() MINOR: quic: Simplication for qc_set_timer() MINOR: quic: Kill the connections on ICMP (port unreachable) packet receipt MINOR: quic: Add traces to qc_kill_conn() MINOR: quic: Make qc_dgrams_retransmit() return a status. BUG/MINOR: quic: Missing call to task_queue() in qc_idle_timer_do_rearm() MINOR: quic: Add a trace to identify connections which sent Initial packet. MINOR: quic: Add to the traces BUG/MINOR: quic: Do not probe with too little Initial packets BUG/MINOR: quic: Wrong initialization for io_cb_wakeup boolean BUG/MINOR: quic: Do not drop too small datagrams with Initial packets BUG/MINOR: quic: Missing padding for short packets BUG/MEDIUM: quic: Missing TX buffer draining from qc_send_ppkts() BUILD: quic: 32-bits compilation issue with %zu in quic_rx_pkts_del() BUILD: thead: Fix several 32 bits compilation issues with uint64_t variables Remi Tricot-Le Breton (2): BUG/MINOR: cache: Cache response even if request has "no-cache" directive BUG/MINOR: cache: Check cache entry is complete in case of Vary Sébaastien Gross (1): MINOR: config: add HAPROXY_BRANCH environment variable William Lallemand (7): MINOR: ssl: rename confusing ssl_bind_kws BUG/MINOR: config: crt-list keywords mistaken for bind ssl keywords BUG/MINOR: mworker: prevent incorrect values in uptime BUG/MINOR: mworker: stop doing strtok directly from the env BUG/MEDIUM: mworker: prevent inconsistent reload when upgrading from old versions BUG/MEDIUM: mworker: don't register mworker_accept_wrapper() when master FD is wrong MINOR: startup: HAPROXY_STARTUP_VERSION contains the version used to start Willy Tarreau (12): BUG/MEDIUM: wdt: fix wrong thread being checked for sleeping BUG/MINOR: sched: properly report long_rq when tasks remain in the queue BUG/MEDIUM: sched: allow a bit more TASK_HEAVY to be processed when needed MINOR: threads: add flags to know if a thread is started and/or running MINOR: mux-h2/traces: do not log h2s pointer for dummy streams MINOR: mux-h2/traces: add a missing TRACE_LEAVE() in h2s_frt_handle_headers() MINOR: compiler: add a TOSTR() macro to turn a value into a string BUG/MINOR: ring: do not realign ring contents on resize MEDIUM: ring: make the offset relative to the head/tail instead of absolute CLEANUP: ring: remove the now unused ring's offset BUG/MINOR: fd: used the update list from the fd's group instead of tgid BUG/MEDIUM: fd: make fd_delete() support being called from a different group