Hi,

HAProxy 2.0.23 was released on 2021/07/16. It added 97 new commits
after version 2.0.22.

All commits were already mentioned in announcements of the last 2.3 and 2.2
releases. So I will be brief. Here is the list of main bugs fixed by this
release:

  * An issue in the CONTINUATION frames parsing in h2 leading to spurious
    wakeups.

  * A bug in the shutdowns detection for h2 connections.

  * A possible deadlock if "set maxconn server" command was used when there
    was a pending connection ready to be dequeued.

  * A bug in the HTX defragmentation leading to crash. The bug might be
    encountered in the HTTP compression filter or in HTTP header
    replacement.

  * An old bug preventing the dequeuing for servers with a very low maxconn
    because the load balancing was not skipped when a new connection was
    picked from the proxy's or server's queue.

  * A bug in the sock part leading to high CPU usage because some early
    connection failures might be missed.

  * A thread-safety issue with the SHCTX code when compiled with
    USE_PRIVATE_CACHE mode. It was not using any locks.

  * An issue with the abortonclose option. It was not working since a while.

  * A bug in the HTTP compression leading to truncated or corrupted
    responses.

  * "url_ip"/"url_port" sample fetches not properly handling url parsing
    errors.

  * A bug in the cpu-map notation when both processes and threads were
    specified, most specifically P-Q/1 or 1/P-Q notation.

  * Some issues affecting the peers synchronization.

  * H1 idle connections on server side receiving data not closed. Because of
    this bug, it was possible to send pending 408-Request-time-out responses
    to clients.

  * Wrong number of retries reported in logs if no connection was
    attempted. Since the beginning, when the session was aborted before any
    connection attempt to any server, the backend retries value was
    reported, instead of 0.

  * A bug with the method sample fetch when an exotic method is found.

Note that resolvers performance issues fixed in upper versions were not
fixed in this one because the code is too different. This part is a
perpetual source of bugs. It was too risky to backport the fixes. If you
experience any issue with the resolvers, please consider to upgrade to a
newer version.

Thanks everyone for your help and your contributions!

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/


---
Complete changelog :
Amaury Denoyelle (6):
      BUG/MINOR: server: free srv.lb_nodes in free_server
      BUG/MEDIUM: config: fix cpu-map notation with both process and threads
      BUG/MINOR: http_fetch: fix possible uninit sockaddr in fetch_url_ip/port
      BUG/MAJOR: server: prevent deadlock when using 'set maxconn server'
      BUG/MINOR: stick-table: insert srv in used_name tree even with fixed id
      BUG/MAJOR: server: fix deadlock when changing maxconn via agent-check

Christopher Faulet (34):
      DOC: Explicitly state only IPv4 are supported by forwardfor/originalto 
options
      BUG/MEDIUM: threads: Ignore current thread to end its harmless period
      BUG/MINOR: http-fetch: Make method smp safe if headers were already 
forwarded
      BUG/MINOR: http_htx: Remove BUG_ON() from http_get_stline() function
      BUG/MINOR: logs: Report the true number of retries if there was no 
connection
      BUG/MINOR: mux-h1: Release idle server H1 connection if data are received
      BUG/MAJOR: mux-h2: Properly detect too large frames when decoding headers
      BUG/MEDIUM: mux-h2: Fix dfl calculation when merging CONTINUATION frames
      BUG/MEDIUM: mux-h2: Properly handle shutdowns when received with data
      BUG/MINOR: htx: Preserve HTX flags when draining data from an HTX message
      BUG/MINOR: applet: Notify the other side if data were consumed by an 
applet
      BUG/MINOR: hlua: Don't rely on top of the stack when using Lua buffers
      BUG/MINOR: stream: Decrement server current session counter on L7 retry
      BUG/MINOR: stream: Reset stream final state and si error type on L7 retry
      MINOR: channel: Rely on HTX version if appropriate in channel_may_recv()
      BUG/MINOR: stream-int: Don't block reads in si_update_rx() if chn may 
receive
      MEDIUM: mux-h1: Don't block reads when waiting for the other side
      REGTESTS: Add script to test abortonclose option
      BUG/MEDIUM: filters: Exec pre/post analysers only one time per filter
      BUG/MINOR: http-comp: Preserve HTTP_MSGF_COMPRESSIONG flag on the response
      BUG/MINOR: http-ana: Handle L7 retries on refused early data before K/A 
aborts
      BUG/MEDIUM: compression: Add a flag to know the filter is still 
processing data
      BUG/MAJOR: htx: Fix htx_defrag() when an HTX block is expanded
      DOC: lua: Add a warning about buffers modification in HTTP
      BUG/MEDIUM: spoe: Register pre/post analyzers in start_analyze callback 
function
      MINOR: tcp-act: Add set-src/set-src-port for "tcp-request content" rules
      DOC: config: Add missing actions in "tcp-request session" documentation
      BUG/MEDIUM: server/cli: Fix ABBA deadlock when fqdn is set from the CLI
      BUG/MINOR: server/cli: Fix locking in function processing "set server" 
command
      BUG/MINOR: resolvers: Reset server IP when no ip is found in the response
      MINOR: resolvers: Reset server IP on error in 
resolv_get_ip_from_response()
      Revert "MINOR: tcp-act: Add set-src/set-src-port for "tcp-request content" 
rules"
      BUG/MINOR: server-state: load SRV resolution only if params match the 
config
      BUG/MINOR: server: Forbid to set fqdn on the CLI if SRV resolution is 
enabled

Daniel Black (1):
      DOC: config: use CREATE USER for mysql-check

Emeric Brun (17):
      BUG/MINOR: peers: remove useless table check if initial resync is finished
      BUG/MEDIUM: peers: re-work connection to new process during reload.
      BUG/MEDIUM: peers: re-work refcnt on table to protect against flush
      BUG/MEDIUM: peers: initialize resync timer to get an initial full resync
      BUG/MEDIUM: peers: register last acked value as origin receiving a resync 
req
      BUG/MEDIUM: peers: stop considering ack messages teaching a full resync
      BUG/MEDIUM: peers: reset starting point if peers appears longly 
disconnected
      BUG/MEDIUM: peers: reset commitupdate value in new conns
      BUG/MEDIUM: peers: re-work updates lookup during the sync on the fly
      BUG/MEDIUM: peers: reset tables stage flags stages on new conns
      MINOR: peers: add informative flags about resync process for debugging
      BUG/MEDIUM: dns: reset file descriptor if send returns an error
      BUG/MEDIUM: dns: send messages on closed/reused fd if fd was detected 
broken
      BUG/MINOR: resolvers: answser item list was randomly purged or errors
      BUG/MINOR: stick-table: fix several printf sign errors dumping tables
      DOC: stick-table: add missing documentation about gpt0 stored type
      BUG/MINOR: peers: fix data_type bit computation more than 32 data_types

Julien Pivotto (1):
      DOC: clarify that compression works for HTTP/2

Olivier Houchard (1):
      BUG/MEDIUM: pools: Always update free_list in pool_gc().

Remi Tricot-Le Breton (15):
      BUG/MEDIUM: ebtree: Invalid read when looking for dup entry
      BUG/MINOR: server: Missing calloc return value check in srv_parse_source
      BUG/MINOR: peers: Missing calloc return value check in 
peers_register_table
      BUG/MINOR: ssl: Missing calloc return value check in 
ssl_init_single_engine
      BUG/MINOR: http: Missing calloc return value check in 
parse_http_req_capture
      BUG/MINOR: proxy: Missing calloc return value check in proxy_parse_declare
      BUG/MINOR: proxy: Missing calloc return value check in proxy_defproxy_cpy
      BUG/MINOR: http: Missing calloc return value check while parsing 
tcp-request/tcp-response
      BUG/MINOR: http: Missing calloc return value check while parsing 
tcp-request rule
      BUG/MINOR: compression: Missing calloc return value check in 
comp_append_type/algo
      BUG/MINOR: worker: Missing calloc return value check in 
mworker_env_to_proc_list
      BUG/MINOR: http: Missing calloc return value check while parsing redirect 
rule
      BUG/MINOR: http: Missing calloc return value check in make_arg_list
      BUG/MINOR: proxy: Missing calloc return value check in 
chash_init_server_tree
      BUG/MINOR: ssl: OCSP stapling does not work if expire too far in the 
future

Thayne McCombs (2):
      BUG/MINOR: tools: fix parsing "us" unit for timers
      BUG/MEDIUM: sample: Fix adjusting size in field converter

Thierry Fournier (1):
      MINOR: hlua: Add error message relative to the Channel manipulation and 
HTTP mode

William Lallemand (2):
      BUG/MINOR: mworker/init: don't reset nb_oldpids in non-mworker cases
      BUG/MINOR: mworker: don't use oldpids[] anymore for reload

Willy Tarreau (17):
      BUG/MEDIUM: cli: prevent memory leak on write errors
      BUG/MINOR: stream: properly clear the previous error mask on L7 retries
      BUG/MEDIUM: shctx: use at least thread-based locking on USE_PRIVATE_CACHE
      BUG/MINOR: ssl: use atomic ops to update global shctx stats
      BUG/MINOR: mworker: fix typo in chroot error message
      BUG/MAJOR: queue: set SF_ASSIGNED when setting strm->target on dequeue
      MINOR: mux-h2: obey http-ignore-probes during the preface
      BUG/MEDIUM: sock: make sure to never miss early connection failures
      BUG/MINOR: cli: fix server name output in "show fd"
      DOC: peers: fix the protocol tag name in the doc
      MINOR: pools/debug: slightly relax DEBUG_DONT_SHARE_POOLS
      BUG/MINOR: pools: fix a possible memory leak in the lockless pool_flush()
      MINOR: pools: do not maintain the lock during pool_flush()
      MEDIUM: memory: make pool_gc() run under thread isolation
      MEDIUM: pools: use a single pool_gc() function for locked and lockless
      BUG/MAJOR: pools: fix possible race with free() in the lockless variant
      CLEANUP: pools: remove now unused seq and pool_free_list

--
Christopher Faulet

Reply via email to