Changes since version 2.8-dev4 : Amaury Denoyelle (23): 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 MEDIUM: quic: improve fatal error handling on send MINOR: quic: consider EBADF as critical on send() MINOR: quic: simplify return path in send functions MINOR: quic: implement qc_notify_send() MINOR: quic: purge txbuf before preparing new packets MEDIUM: quic: implement poller subscribe on sendto error MINOR: quic: notify on send ready BUG/MEDIUM: quic: properly handle duplicated STREAM frames BUG/MINOR: cli: fix CLI handler "set anon global-key" call Aurelien DARRAGON (20): 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 MINOR: http_ext: adding some documentation, forgot to inline function Christopher Faulet (52): 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 BUG/MEDIUM: connection: Clear flags when a conn is removed from an idle list BUG/MINOR: mux-h1: Don't report an error on an early response close BUG/MINOR: http-check: Don't set HTX_SL_F_BODYLESS flag with a log-format body BUG/MINOR: http-check: Skip C-L header for empty body when it's not mandatory BUG/MINOR: http-ana: Don't increment conn_retries counter before the L7 retry BUG/MINOR: http-ana: Do a L7 retry on read error if there is no response BUG/MEDIUM: http-ana: Don't close request side when waiting for response BUG/MINOR: mxu-h1: Report a parsing error on abort with pending data 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 Oto Valek (2): BUG/MINOR: http-fetch: recognize IPv6 addresses in square brackets in req.hdr_ip() REGTEST: added tests covering smp_fetch_hdr_ip() Remi Tricot-Le Breton (20): BUG/MINOR: cache: Cache response even if request has "no-cache" directive BUG/MINOR: cache: Check cache entry is complete in case of Vary MINOR: ssl: Destroy ocsp update http_client during cleanup MINOR: ssl: Reinsert ocsp update entries later in case of unknown error MINOR: ssl: Add ocsp update success/failure counters MINOR: ssl: Store specific ocsp update errors in response and update ctx MINOR: ssl: Add certificate's path to certificate_ocsp structure MINOR: ssl: Add 'show ssl ocsp-updates' CLI command MINOR: ssl: Add sample fetches related to OCSP update MINOR: ssl: Use dedicated proxy and log-format for OCSP update MINOR: ssl: Reorder struct certificate_ocsp members MINOR: ssl: Increment OCSP update replay delay in case of failure MINOR: ssl: Add way to dump ocsp response in base64 MINOR: ssl: Add global options to modify ocsp update min/max delay REGTESTS: ssl: Fix ocsp update crt-lists REGTESTS: ssl: Add test for new ocsp update cli commands MINOR: ssl: Add ocsp-update information to "show ssl crt-list" BUG/MINOR: ssl: Fix ocsp-update when using "add ssl crt-list" MINOR: ssl: Replace now.tv_sec with date.tv_sec in ocsp update task BUG/MINOR: ssl: Use 'date' instead of 'now' in ocsp stapling callback 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 (14): 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 CLEANUP: listener: only store conn counts for local threads MINOR: tinfo: make thread_set functions return nth group/mask instead of first