Hi,

HAProxy 1.8.29 was released on 2021/03/19. It added 40 new commits
after version 1.8.28.

As again, this is mainly a release with a collection of fixes which
improve the overall quality and stability of haproxy. Here is a list of
the most notables changes :

- William D. and Christopher give special care on the server-state file.
  Some bugs related to the servers reload from the state file are
  corrected. Most notably, the RMAINT dynamic state is now ignored if
  present in the state file. This prevents an error to be reported and
  the server to not be updated. Also, it is now possible in the
  configuration file to use the server-state directive without a
  filename. In this case, a file with the backend name will
  automatically be used as the state file. In fact, this feature was
  already documented but not functional.

- The SPOE module receives fixes. First, a crash caused by dangling
  references on released applets is now prevented. It could have
  happened on unusual various occasions, one of them being during a
  reload. Second, after receiving an incomplete frame, the SPOE stream
  processing was stucked. Now the stream is properly woken up to process
  the remaining data. Finally, some adjustments have been made to
  process streams smoother when using SPOE with multithread, especially
  with a low maxconn on the server.

- The DNS responses are matched with case-insensitive functions. This
  prevent resolution failures for the uncommon case of having uppercases
  characters in names of DNS queries.

- It is now possible to use ipv6 connections for servers with the
  special address 0.0.0.0 to reuse the client source address as a
  transparent proxy.

- A bug was fixed by Willy in the configuration parser. The queue and
  tarpit timeouts were applied from the last default section if not
  defined instead of the default section before the proxy definition.
  This might have resulted in incorrect timeout values. This bug is 13
  years old so I think it deserves a special note here :)

- The processing of the originalto option has been adjusted. Now the
  destination address is correctly tested against the except statement.
  Please be careful because the doc was also wrong on this point,
  mentioning the source instead of the destination address. It has been
  edited, so this feature is now consistent.

- There was an issue with the set-dst tcp rule. The destination tcp port
  was not correctly fixed for an ipv4 address. However its impact was
  limited on UNIX sockets.

- Christopher wrote a fix for the filters. This ensure that the filters
  will be called on the response after the request, even if the analyzis
  on the request is finished before the start of the response filtering.

- The sample fetch functions are safer and handle properly an empty
  string buffer value. Before this, it caused a memory corruption
  problem by reading bytes outside of the sample value.

- Data races could happened on hard-stop or shutdown-sessions. These
  instructions are now only executed when no other threads are running
  to enforce the thread-safety.

- Willy has fixed a data race on frequency counters, causing a
  non-monotonically updates of them. At the same occasion, an
  optimization has been backported. The counters are now incremented
  atomically without a lock. This reduces the contention on them, which
  should improve the performance as they are often used as proxies
  counters.

- The sticky counter of the sessions was also subject to a non-thread
  safe incrementation and could be slightly off on time. An atomic
  operation is now used to guarantee a correct value.

- A possible crash was averted by William when manipulating listener
  counters with an applet as a client (peers, SPOE or Lua). In this
  case, the listener instance is null, thus it cannot be dereferenced.
  However, these instructions are limited to specific scopes, so most of
  the time it won't happened for an applet.

Thanks to everyone for this release. Enjoy !

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/1.8/src/
   Git repository   : http://git.haproxy.org/git/haproxy-1.8.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy-1.8.git
   Changelog        : http://www.haproxy.org/download/1.8/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

---
Complete changelog :
Amaury Denoyelle (2):
      BUG/MINOR: config: fix leak on proxy.conn_src.bind_hdr_name
      CLEANUP: remove unused src/cfgparse-listen.c

Bertrand Jacquin (1):
      BUILD/MINOR: lua: define _GNU_SOURCE for LLONG_MAX

Christopher Faulet (20):
      BUG/MINOR: stick-table: Always call smp_fetch_src() with a valid arg list
      BUG/MINOR: server: Fix server-state-file-name directive
      CLEANUP: deinit: release global and per-proxy server-state variables on 
deinit
      BUG/MINOR: server: Don't call fopen() with server-state filepath set to 
NULL
      BUG/MINOR: server: Remove RMAINT from admin state when loading server 
state
      BUG/MINOR: sample: Always consider zero size string samples as unsafe
      BUG/MINOR: server: Init params before parsing a new server-state line
      BUG/MINOR: server: Be sure to cut the last parsed field of a server-state 
line
      BUG/MINOR: http-ana: Only consider dst address to process originalto 
option
      BUG/MINOR: tcp-act: Don't forget to set the original port for IPv4 
set-dst rule
      BUG/MINOR: connection: Use the client's dst family for adressless servers
      BUG/MEDIUM: spoe: Kill applets if there are pending connections and 
nbthread > 1
      BUG/MAJOR: spoe: Be sure to remove all references on a released spoe 
applet
      BUG/MEDIUM: spoe: Explicitly wakeup SPOE stream if waiting for more data
      DOC: spoe: Add a note about fragmentation support in HAProxy
      BUG/MINOR: hlua: Don't strip last non-LWS char in 
hlua_pushstrippedstring()
      BUG/MEDIUM: filters: Set CF_FL_ANALYZE on channels when filters are 
attached
      BUG/MINOR: proxy/session: Be sure to have a listener to increment its 
counters
      BUG/MINOR: resolvers: Consider server to have no IP on DNS resolution 
error
      BUG/MINOR: resolvers: Add missing case-insensitive comparisons of DNS 
hostnames

Emeric Brun (1):
      CLEANUP: channel: fix comment in ci_putblk.

Olivier Houchard (1):
      BUG/MEDIUM: dns: Consider the fact that dns answers are case-insensitive

Remi Tricot-Le Breton (1):
      BUG/MINOR: sample: Memory leak of sample_expr structure in case of error

William Dauchy (1):
      BUG/MINOR: server: re-align state file fields number

William Lallemand (1):
      BUG/MEDIUM: session: NULL dereference possible when accessing the listener

Willy Tarreau (12):
      DOC: management: fix "show resolvers" alphabetical ordering
      BUG/MINOR: xxhash: make sure armv6 uses memcpy()
      BUG/MEDIUM: config: don't pick unset values from last defaults section
      BUG/MINOR: session: atomically increment the tracked sessions counter
      BUG/MINOR: checks: properly handle wrapping time in __health_adjust()
      BUG/MEDIUM: proxy: use thread-safe stream killing on hard-stop
      BUG/MEDIUM: cli/shutdown sessions: make it thread-safe
      BUG/MINOR: ssl: don't truncate the file descriptor to 16 bits in debug 
mode
      CLEANUP: tcp-rules: add missing actions in the tcp-request error message
      MINOR: time: export the global_now variable
      OPTIM: freq-ctr: don't take the date lock for most updates
      BUG/MINOR: freq_ctr/threads: make use of the last updated global time

-- 
Amaury Denoyelle

Reply via email to