Hi, HAProxy 2.4-dev13 was released on 2021/03/19. It added 40 new commits after version 2.4-dev12.
The number of bug fixes is shrinking (only 6 this week), this is a good sign! I personally haven't made progress on any of the parts I expected to work on last week, so these are just postponed. In addition I rechecked the expected cleanups of contrib/. I couldn't find my notes on the proposal I discussed between a few of us but that wasn't very difficult, so I'll be able to do it again (in short I want to separate what links with haproxy and what does not, tools for users vs tools for developers, and what is version-specific from what is not). Emeric implemented the accidently missing unix-dgram socket binding which was missing for dgram-based sockets as used in the log-forward sections. Christopher fixed a race condition between Lua's memory allocators and thread dump signals that could deadlock the watchdog or a "show threads" command if the signal was caught in the middle of a malloc() call there. Olivier made some cleanup to the connection setup code, which used to pass through a non-trivial sequence when several transport layers were involved (e.g. SSL + send-proxy). Now it's much cleaner and less confusing especially for those single-stepping the code in gdb! Amaury did a nice cleanup pass on the server keywords parsing, and the cherry on the cake is that with this done he could implement support for creating servers at runtime from the CLI. Yeah :-) There are still quite some limitations to this, only certain options may be set, checks and resolvers are not yet supported, static LB algorithms are not supported, etc. Initially I wasn't much in favor of doing such a sensitive change this late in the release cycle, but the code is so well isolated that it does not represent any risk for those not using it, and we do know that there are a lot of people waiting for this. So we agreed to release it early and mark it experimental. That is, you won't see the "add server" command on the CLI until you first issue "experimental-mode on". This way only those willing to experiment can do it, and this can help collect early feedback without affecting anyone else. Please try it if you've been waiting for this, and share your feedback. Be careful, there's no deletion yet :-) Eric fixed an amusing bug (if I can say). The "unix-bind prefix" directive applied to any listening unix socket, including the one passed on the command line with a full absolute path after "-S". This would typically break the use cases for those having to place a listener in a chroot, as this would result in the master socket being placed there as well, which kind of defeats the original intent... The plans for dev14 remain the same as they were for dev13. I also identified that documenting the listeners architecture is becoming really needed now, so this was added to the to-do list. Please find the usual URLs below : Site index : http://www.haproxy.org/ Discourse : http://discourse.haproxy.org/ Slack channel : https://slack.haproxy.org/ Issue tracker : https://github.com/haproxy/haproxy/issues Wiki : https://github.com/haproxy/wiki/wiki Sources : http://www.haproxy.org/download/2.4/src/ Git repository : http://git.haproxy.org/git/haproxy.git/ Git Web browsing : http://git.haproxy.org/?p=haproxy.git Changelog : http://www.haproxy.org/download/2.4/src/CHANGELOG Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/ Willy --- Complete changelog : Amaury Denoyelle (16): MINOR: cli: implement experimental-mode REORG: server: add a free server function MINOR: cfgparse: always alloc idle conns task REORG: server: move keywords in srv_kws MINOR: server: remove fastinter from mistyped kw list REORG: server: split parse_server REORG: server: move alert traces in parse_server REORG: server: rename internal functions from parse_server REORG: server: attach servers in parse_server REORG: server: use flags for parse_server MINOR: server: prepare parsing for dynamic servers MINOR: stats: export function to allocate extra proxy counters MEDIUM: server: implement 'add server' cli command REGTESTS: implement test for 'add server' cli MINOR: server: enable standard options for dynamic servers MINOR: server: support keyword proto in 'add server' cli Christopher Faulet (5): BUG/MINOR: resolvers: Add missing case-insensitive comparisons of DNS hostnames CLEANUP: Fix a typo in fix_is_valid description CLEANUP: tcp-rules: Fix a typo in error messages about expect-netscaler-cip MEDIUM: lua: Use a per-thread counter to track some non-reentrant parts of lua BUG/MEDIUM: debug/lua: Don't dump the lua stack if not dumpable Emeric Brun (1): BUG/MINOR: protocol: add missing support of dgram unix socket. Eric Salama (2): MINOR/BUG: mworker/cli: do not use the unix_bind prefix for the master CLI socket MINOR: mworker/cli: alert the user if we enabled a master CLI but not the master-worker mode Olivier Houchard (5): MINOR: raw_sock: Add a close method. MEDIUM: connections: Introduce a new XPRT method, start(). MEDIUM: connections: Implement a start() method for xprt_handshake. MEDIUM: connections: Implement a start() method in ssl_sock. MINOR: muxes: garbage collect the reset() method. Willy Tarreau (11): BUG/MEDIUM: cli: fix "help" crashing since recent spelling fixes BUG/MINOR: cfgparse: use the GLOBAL not LISTEN keywords list for spell checking MINOR: tools: improve word fingerprinting by counting presence MINOR: tools: do not sum squares of differences for word fingerprints MINOR: cli: improve fuzzy matching to work on all remaining words at once MINOR: cli: sort the suggestions by order of relevance MINOR: cli: limit spelling suggestions to 5 MINOR: cfgparse/proxy: also support spelling fixes on options MINOR: time: export the global_now variable BUG/MINOR: freq_ctr/threads: make use of the last updated global time MINOR: freq_ctr/threads: relax when failing to update a sliding window value ---