Hi, HAProxy 3.2-dev1 was released on 2024/12/11. It added 95 new commits after version 3.2-dev0.
Two weeks after the 3.1 release, it's time to emit a first 3.2-dev. This one is pretty normal. It contains 37 fixes, a few of which were even for new features in that version. I would say that for now, aside the few usual post-release issues, there was nothing particularly scary. I'm not going to enumerate the bugs fixed, they'll be covered in the forthcoming 3.1 announce. The most visible changes at the moment are in these areas: - Lua: a new "patref" class opens direct access to pattern references used by acls and maps and offers more reliable and also faster access than by using the map/acl ones because it supports batches and avoids individual lookups. - CLI: "show ssl sni" lists all the loaded frontend certificates' SNI with their file names and validity dates. That makes it convenient to quickly see what names are handled at a given instant. - QUIC: the system's support for optional optimizations (socket-owner, GSO) is now reported in -vv - Stick-tables: a new directive "recv-only" indicates that this table will only receive entries from a peer and will not be locally updated, and as such might accept to receive more data types. At the moment it only makes the difference for "conn_cur", which will permit a peer to share its current connections count in its own table, but it was designed in a way that should make it easy to support more similar data types in the future. - L7 retries: retry-on now supports HTTP status 421 (misdirected request) among the ones to decide to retry on. - mux-h2: glitch counters now all have a description so that "debug counters" will translate in human words what large numbers correspond to. The rest is mostly for developers: - a few code cleanups here and there (shut coverity warnings about possible null derefs which are not, reword some ambiguous h2 traces) - CI updates (/tmp handling, core dumps) - rename some unclear internal flags - and doc updates - improved the fddebug() macro for even easier printf-based debugging So these changes are pretty timid for now, so that's a good reason to upgrade to 3.2-dev without taking risks, and stay up to date with latest updates and fixes. As usual, I'll tell you once it starts to become less safe for those not accustomed to -dev. Please find the usual URLs below : Site index : https://www.haproxy.org/ Documentation : https://docs.haproxy.org/ Wiki : https://github.com/haproxy/wiki/wiki Discourse : https://discourse.haproxy.org/ Slack channel : https://slack.haproxy.org/ Issue tracker : https://github.com/haproxy/haproxy/issues Sources : https://www.haproxy.org/download/3.2/src/ Git repository : https://git.haproxy.org/git/haproxy.git/ Git Web browsing : https://git.haproxy.org/?p=haproxy.git Changelog : https://www.haproxy.org/download/3.2/src/CHANGELOG Dataplane API : https://github.com/haproxytech/dataplaneapi/releases/latest Pending bugs : https://www.haproxy.org/l/pending-bugs Reviewed bugs : https://www.haproxy.org/l/reviewed-bugs Code reports : https://www.haproxy.org/l/code-reports Latest builds : https://www.haproxy.org/l/dev-packages Willy --- Complete changelog : Amaury Denoyelle (16): BUG/MEDIUM: quic: prevent stream freeze on pacing BUG/MEDIUM: mux-quic: remove pacing status when everything is sent BUG/MINOR: quic: remove startup alert if conn socket-owner unsupported BUG/MINOR: quic: remove startup alert if GSO unsupported MINOR: mux-quic: clean up zero-copy done_ff callback MINOR: mux-h1: use explicit __objt_server on idle conn reinsert MINOR: mux-h2: use explicit __objt_server on idle conn reinsert MINOR: mux-spop: use explicit __objt_server on idle conn reinsert MINOR: mux-fcgi: use explicit __objt_server on idle conn reinsert MINOR: quic: convert startup check in a freestanding function MINOR: quic: split startup check function MINOR: quic: implement build options report BUG/MINOR: stats: decrement srv refcount on stats-file release MINOR: list: define a watcher type BUG/MEDIUM: stats/server: use watcher to track server during stats dump MINOR: server: remove prev_deleted server list Aurelien DARRAGON (34): MINOR: pattern: split pat_ref_set() MINOR: pattern: add pat_ref_gen_set() function MINOR: pattern: add pat_ref_gen_find_elt() function MINOR: pattern: add pat_ref_gen_delete() function MEDIUM: pattern: consider gen_id in pat_ref_set_from_node() MEDIUM: pattern: always consider gen_id for pat_ref lookup operations BUG/MINOR: log: fix lf_text() behavior with empty string MINOR: log: always consider "+M" option in lf_text_len() MINOR: event_hdl: add PAT_REF events MINOR: pattern: publish event_hdl events on pat_ref updates MINOR: hlua: add patref class MINOR: hlua: add core.get_patref method MINOR: hlua_fcn: implement index and pair metamethods for patref class MINOR: hlua_fcn: wrap pat_ref struct for patref class MINOR: pattern: add pat_ref_may_commit() helper function MINOR: hlua_fcn: add Patref:commit() method MINOR: hlua_fcn: add Patref:prepare() method MINOR: hlua_fcn: add Patref:purge() method MINOR: hlua_fcn: add Patref:giveup() MINOR: hlua_fcn: add Patref:add() MINOR: hlua_fcn: add Patref:del() MINOR: hlua_fcn: add Patref:set() MINOR: hlua_fcn: add Patref:add_bulk() MINOR: hlua_fcn: add Patref:event_sub() DOC: lua: prefer Patref:{set,add}() over legacy methods for acl and maps BUG/MINOR: hlua_fcn: fix Patref:set() force parameter BUG/MEDIUM: event_hdl: fix uninitialized value in async mode when no data is provided BUG/MINOR: listener: fix potential null pointer dereference in listener_release() MINOR: hlua: fix ambiguous hlua usage in hlua_filter_delete() MINOR: stktable: implement "recv-only" table option CLEANUP: stktable: replace nopurge attribute with flag CLEANUP: stktable: add some stktable flags polishing DOC: config: fix confusing init-state examples BUG/MINOR: hlua_fcn: restore server pairs iterator pointer consistency Christopher Faulet (7): BUG/MEDIUM: sock: Remove FD_POLL_HUP during connect() if FD_POLL_ERR is not set MINOR: proxy: Add support of 421-Misdirected-Request in retry-on status BUG/MEDIUM: http-ana: Reset request flag about data sent to perform a L7 retry BUG/MINOR: h1-htx: Use default reason if not set when formatting the response BUG/MINOR: config: Fix parsing of accept-invalid-http-{request,response} BUG/MINOR: http-fetch: Ignore empty argument string for query() BUG/MINOR: server-state: Fix expiration date of srvrq_check tasks Frederic Lecaille (3): BUG/MINOR: improve BBR throughput on very fast links BUILD: quic: fix a build error about an non initialized timestamp BUG/MINOR: quic: fix bbr_inflight() calls with wrong gain value Ilia Shipitsin (4): BUG/MINOR: namespace: handle a possible strdup() failure BUG/MINOR: ssl_crtlist: handle a possible strdup() failure BUG/MINOR: resolvers: handle a possible strdup() failure CI: use "/tmp" as default value for TMPDIR when searching logs Valentine Krasnobaeva (11): BUG/MINOR: signal: register default handler for SIGINT in signal_init() BUG/MINOR: startup: close pidfd and free global.pidfile in handle_pidfile() BUG/MINOR: startup: fix pidfile creation BUG/MINOR: mworker: don't save program PIDs in oldpids BUG/MINOR: mworker: fix -D -W -sf/-st modes BUG/MINOR: startup: fix error path for master, if can't open pidfile CLEANUP: startup: make if condition to kill old pids more readable BUG/MEDIUM: startup: don't daemonize if started with -c BUG/MEDIUM: startup: report status if daemonized process fails BUG/MEDIUM: mworker: report status, if daemonized master fails BUG/MINOR: mworker: detach from tty when received READY from worker William Lallemand (6): CI: github: allow coredumps on aws-lc and wolfssl jobs MINOR: ssl: add notBefore and notAfter utility functions MEDIUM: ssl/cli: "show ssl sni" list the loaded SNI in frontends DOC: management: fix typos and paragraph ordering in 'show ssl sni' CLEANUP: ssl: fix comment in 'show ssl sni' MINOR: ssl/cli: add negative filters to "show ssl sni" Willy Tarreau (14): MINOR: version: this is development again (3.2) DEV: patchbot: prepare for new version 3.2-dev MINOR: tools: add a new macro DEFVAL() to provide a default argument MINOR: tasklet: set TASK_WOKEN_OTHER on tasklets by default BUG/MEDIUM: init: make sure only daemonized processes change their session BUG/MINOR: init: do not call fork_poller() for non-forked processes BUG/MEDIUM: mux-h2: make sure not to touch dummy streams when sending WU BUG/MINOR: debug: COUNT_IF() should return true/false MINOR: mux-h2/traces: add a missing trace on negative initial window size CLEANUP: mux-h2/traces: reword certain ambiguous traces MINOR: mux-h2/glitches: add a description to the H2 glitches BUG/MINOR: mux-h2: fix expression when detecting excess of CONTINUATION frames BUILD: debug: fix build issues in COUNT_IF() with -Wunused-value MINOR: tools: make fddebug() automatically emit the location ---