Hi, HAProxy 2.0.20 was released on 2021/01/08. It added 59 new commits after version 2.0.19.
Here come the bugs that were fixed since 2.0.19: - Gilchrist Dadaglo fixed a number of issues in the SPOA Python example, particularly on the error handling path. I seem to understand that most of them are related to risks of memory leaks. If you wrote some code using them as a form of documentation, please have a look at the recent changes there to see if you need to fix your code as well. - Olivier fixed a problem affecting users of ARM-based Macs, whose assembler takes the semi-colon as a comment instead of an instruction delimiter, causing the CAS to fail and loop forever. - Olivier and I addressed some memory ordering issues in the scheduler and self-locked lists that triggered on AWS' new ARM Graviton2 platform. We can thank Ashley Penney for all the useful tests and traces he provided! - Christopher fixed a delay issue affecting tunnels, where MSG_MORE was accidently left set, possibly delaying sending incomplete packets by up to 200ms. - Christopher also addressed a race condition affecting leastconn if a server's weight is changed to zero at the same moment the server is repositionned in the tree. In fact it's only an issue for 1.8 but the code was not correct in more recent versions either, but they're just more robust :-) - Christopher fixed a possible dangling pointer in SPOE that could cause random memory overwrites. Special thanks to Maciej Zdeb for tirelessly deploying test patches and checking traces to narrow it down! - Maciej fixed the sample fetches to retrieve messages cookies when called without cookie name. This case was never properly handled, contrary to what the doc says. - Thierry addressed a handful of low-importance Lua issues that were found during a code review. - Fred fixed a few bugs in the peers protocol parser and the dictionaries that were occasionally causing peers to get desynchronized. - the "concat" converter could corrupt its output if a non-string variable was used in the middle (e.g. an integer). That's roughly all for bugs. Two minor features were backported, one is William Dauchy's new "build_info" field in the prometheus exporter, which reports the exact haproxy version for those who need to adjust their behavior depending on the version, and the second is the new "url_enc" converter which eases encoding of anything to be placed used in a query string (e.g. for a redirect that will be decoded using url_dec). And there were the usual amount of build fixes and doc updates. 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.0/src/ Git repository : http://git.haproxy.org/git/haproxy-2.0.git/ Git Web browsing : http://git.haproxy.org/?p=haproxy-2.0.git Changelog : http://www.haproxy.org/download/2.0/src/CHANGELOG Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/ Willy --- Complete changelog : Amaury Denoyelle (1): BUG/MINOR: srv: do not init address if backend is disabled Christian Ruppert (1): BUILD: hpack: hpack-tbl-t.h uses VAR_ARRAY but does not include compiler.h Christopher Faulet (14): BUG/MINOR: http-fetch: Fix calls w/o parentheses of the cookie sample fetches BUG/MAJOR: spoe: Be sure to remove all references on a released spoe applet MINOR: spoe: Don't close connection in sync mode on processing timeout BUG/MEDIUM: filters: Forward all filtered data at the end of http filtering BUG/MINOR: http-ana: Don't wait for the body of CONNECT requests BUG/MAJOR: filters: Always keep all offsets up to date during data filtering DOC: config: Move req.hdrs and req.hdrs_bin in L7 samples fetches section BUG/MINOR: tools: make parse_time_err() more strict on the timer validity BUG/MINOR: tools: Reject size format not starting by a digit BUG/MEDIUM: lb-leastconn: Reposition a server using the right eweight CLEANUP: lua: Remove declaration of an inexistant function BUG/MINOR: mux-h1: Don't set CS_FL_EOI too early for protocol upgrade requests BUG/MEDIUM: http-ana: Never for sending data in TUNNEL mode DOC: Add maintainers for the Prometheus exporter David Carlier (1): DOC: email change of the DeviceAtlas maintainer Eric Salama (1): MINOR: cfgparse: tighten the scope of newnameserver variable, free it on error. Frédéric Lécaille (2): BUG/MINOR: peers: Do not ignore a protocol error for dictionary entries. BUG/MINOR: peers: Missing TX cache entries reset. Gilchrist Dadaglo (8): BUG/MAJOR: spoa/python: Fixing return None DOC: spoa/python: Fixing typo in IP related error messages DOC: spoa/python: Rephrasing memory related error messages DOC: spoa/python: Fixing typos in comments BUG/MINOR: spoa/python: Cleanup references for failed Module Addobject operations BUG/MINOR: spoa/python: Cleanup ipaddress objects if initialization fails BUG/MEDIUM: spoa/python: Fixing PyObject_Call positional arguments BUG/MEDIUM: spoa/python: Fixing references to None Maciej Zdeb (1): BUG/MINOR: http-fetch: Extract cookie value even when no cookie name Olivier Houchard (1): MINOR: atomic: don't use ; to separate instruction on aarch64. Phil Scherer (1): DOC/MINOR: Fix formatting in Management Guide Pierre Cheynier (1): CLEANUP: contrib/prometheus-exporter: typo fixes for ssl reuse metric Thayne McCombs (2): DOC: fix some spelling issues over multiple files SCRIPTS: announce-release: fix typo in help message Thierry Fournier (9): BUG/MINOR: pattern: a sample marked as const could be written BUG/MINOR: lua: set buffer size during map lookups BUG/MINOR: lua: lua-load doesn't check its parameters BUG/MINOR: lua: Post init register function are not executed beyond the first one BUG/MINOR: lua: Some lua init operation are processed unsafe MINOR: actions: Export actions lookup functions MINOR: actions: add a function returning a service pointer from its name MINOR: cli: add a function to look up a CLI service description BUG/MINOR: lua: warn when registering action, conv, sf, cli or applet multiple times Tim Duesterhus (1): BUG/MINOR: cfgparse: Fail if the strdup() for `rule->be.name` for `use_backend` fails William Dauchy (2): BUILD: Makefile: exclude broken tests by default MINOR: contrib/prometheus-exporter: export build_info Willy Tarreau (12): BUG/MEDIUM: peers: fix decoding of multi-byte length in stick-table messages BUILD: http-htx: fix build warning regarding long type in printf BUG/MAJOR: peers: fix partial message decoding REGTESTS: make use of HAPROXY_ARGS and pass -dM by default BUILD: Makefile: have "make clean" destroy .o/.a/.s in contrib subdirs as well CONTRIB: halog: fix build issue caused by %L printf format CONTRIB: halog: mark the has_zero* functions unused CONTRIB: halog: fix signed/unsigned build warnings on counts and timestamps BUILD: plock: remove dead code that causes a warning in gcc 11 SCRIPTS: improve announce-release to support different tag and versions SCRIPTS: make announce release support preparing announces before tag exists BUG/MINOR: sample: fix concat() converter's corruption with non-string variables Your Name (1): MINOR: plock: use an ARMv8 instruction barrier for the pause instruction ---