Hi,

HAProxy 2.5-dev4 was released on 2021/08/17. It added 82 new commits
after version 2.5-dev3.

This version was expected to be emitted last week but was slightly
delayed so that it contains the final fixes for the H2 vulnerabilities
reported by Tim that were described in previous message, and which
affect Host name consistency with H2 backend servers when Host and
:authority differ or when garbage is placed in the ":scheme" or ":path"
headers, and the one which allows to abuse the H2 ":method" pseudo-header
to forge some malformed HTTP/1 messages that some vulnerable servers
might possibly accept to parse (though we're not aware of any among the
usual mainstream ones).

In addition to this, this version contains a number of improvements:

  - The filters support was added to Lua. It is now possible to write
    Lua scripts to filter HTTP or TCP sessions. For now, this feature
    is highly experimental and must not be used in production as the
    API might possibly still change a little bit (see lua-api/index.rst
    for the details). The API of the Channel class was revisited and
    an HTTPMessage class was added to help writing filters. It comes
    with some limitations. First, it is not possible to yield inside a
    filter callback and it is not really clear for now if this
    limitation will ever be lifted. Second, most functions exposed by
    the Channel class are forbidden when an HTTP message is filtered.
    Finally, only few filter callbacks are supported for now:
    start_analyze, end_analyze, http_headers, http_payload, http_end
    and tcp_payload. This feature was not heavily tested. Thus, if you
    try it, you will most probably encounter several bugs. Be gentle
    but don't hesitate to report them and feel free to criticize the
    API. It is the first stage of this feature and inputs and feedback
    will help us to improve it.

  - health checks and agent checks can now be enabled on dynamically
    added servers. Out of my head, I think it was the last missing
    feature to get fully functional hot addition/removal of servers,
    so testers are really welcome!

  - the enable/disable health/agent CLI commands that were mistakenly
    marked as deprecated while cleaning up the CLI help have been fixed
    as they are not deprecated.

  - the stats page now always continues to list stopped proxies during
    reloads, and only skips the internal ones (there was no such notion
    of internal proxies in the past, forcing us to resort to some tricks
    to avoid listing the ones used by the master CLI for example). This
    means that it finally is possible to collect the last stats of a
    stopping process.

And 25 bugs were fixed, mostly on dynamic servers, Lua, and of course, H2.

Given that 2.5 is focused on technical improvements, I'm fine with merging
patches reasonably late in the release cycle, so let's fix a freeze of
important code submissions on September 15th, which should allow one or two
round trips before the 30th, after which anything too sensitive should be
postponed to -next, and the focus will move towards fixing (or reverting)
what was already merged, and cleaning it up. This should leave us with
about one month for this and will allow us to release between late October
and early November just like we did for 2.3.

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.5/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.5/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Amaury Denoyelle (24):
      BUG/MINOR: server: fix race on error path of 'add server' CLI if track
      BUG/MINOR: server: remove srv from px list on CLI 'add server' error
      MINOR: server: unmark deprecated on enable health/agent cli
      MEDIUM: task: implement tasklet kill
      MINOR: server: initialize fields for dynamic server check
      MINOR: check: allocate default check ruleset for every backends
      MINOR: check: export check init functions
      MINOR: check: do not increment global maxsock at runtime
      MINOR: server: implement a refcount for dynamic servers
      MEDIUM: check: implement check deletion for dynamic servers
      MINOR: check: enable safe keywords for dynamic servers
      MEDIUM: server: implement check for dynamic servers
      MEDIUM: server: implement agent check for dynamic servers
      REGTESTS: server: add dynamic check server test
      MINOR: doc: specify ulimit-n usage for dynamic servers
      REGTESTS: server: fix dynamic server with checks test
      BUG/MINOR: check: test if server is not null in purge
      MINOR: global: define MODE_STOPPING
      BUG/MINOR: server: do not use refcount in free_server in stopping mode
      BUG/MINOR: check: do not reset check flags on purge
      BUG/MINOR: check: fix leak on add dynamic server with agent-check error
      BUG/MEDIUM: check: fix leak on agent-check purge
      BUG/MEDIUM: server: support both check/agent-check on a dynamic instance
      REGTESTS: add a test to prevent h2 desync attacks

Christopher Faulet (27):
      MINOR: spoe: Add a pointer on the filter config in the spoe_agent 
structure
      BUG/MEDIUM: spoe: Create a SPOE applet if necessary when the last one is 
released
      BUG/MEDIUM: spoe: Fix policy to close applets when SPOE connections are 
queued
      BUG/MINOR: tcpcheck: Properly detect pending HTTP data in output buffer
      BUG/MINOR: stream: Don't release a stream if FLT_END is still registered
      MINOR: lua: Add a flag on lua context to know the yield capability at run 
time
      BUG/MINOR: lua: Yield in channel functions only if lua context can yield
      BUG/MINOR: lua: Don't yield in channel.append() and channel.set()
      MINOR: filters/lua: Release filters before the lua context
      MINOR: lua: Add a function to get a reference on a table in the stack
      MEDIUM: lua: Process buffer data using an offset and a length
      MEDIUM: lua: Improve/revisit the lua api to manipulate channels
      DOC: Improve the lua documentation
      MEDIUM: filters/lua: Add support for dummy filters written in lua
      MINOR: lua: Add a function to get a filter attached to a channel class
      MINOR: lua: Add flags on the lua TXN to know the execution context
      MEDIUM: filters/lua: Be prepared to filter TCP payloads
      MEDIUM: filters/lua: Support declaration of some filter callback 
functions in lua
      MEDIUM: filters/lua: Add HTTPMessage class to help HTTP filtering
      MINOR: filters/lua: Add request and response HTTP messages in the lua TXN
      MINOR: filters/lua: Support the HTTP filtering from filters written in lua
      DOC: config: Fix 'http-response send-spoe-group' documentation
      BUG/MINOR: lua: Properly check negative offset in Channel/HttpMessage 
functions
      BUG/MINOR: lua: Properly catch alloc errors when parsing lua filter 
directives
      BUG/MINOR: filters: Always set FLT_END analyser when CF_FLT_ANALYZE flag 
is set
      BUG/MINOR: lua/filters: Return right code when txn:done() is called
      DOC: lua-api: Add documentation about lua filters

David Carlier (1):
      BUILD: tools: get the absolute path of the current binary on NetBSD.

Emeric Brun (1):
      BUG/MEDIUM: cfgcheck: verify existing log-forward listeners during config 
check

Ilya Shipitsin (3):
      CI: travis-ci: temporarily disable arm64 builds
      CLEANUP: assorted typo fixes in the code and comments
      CI: github actions: relax OpenSSL-3.0.0 version comparision

Jonathon Lacher (1):
      DOC/MINOR: fix typo in management document

Kunal Gangakhedkar (1):
      DOC: Minor typo fix - 'question mark' -> 'exclamation mark'

Tim Duesterhus (1):
      CI: Remove obsolete USE_SLZ=1 CI job

William Lallemand (8):
      MINOR: log: rename 'dontloglegacyconnerr' to 'log-error-via-logformat'
      MINOR: doc: rename conn_status in `option httsplog`
      MINOR: proxy: disabled takes a stopping and a disabled state
      MINOR: stats: shows proxy in a stopped state
      BUG/MINOR: buffer: fix buffer_dump() formatting
      MINOR: channel: remove an htx block from a channel
      MINOR: cli: delare the CLI frontend as an internal proxy
      MINOR: proxy: disable warnings for internal proxies

Willy Tarreau (15):
      CLEANUP: thread: fix fantaisist indentation of thread_harmless_till_end()
      MINOR: threads: make thread_release() not wait for other ones to complete
      MEDIUM: threads: add a stronger thread_isolate_full() call
      MEDIUM: servers: make the server deletion code run under full thread 
isolation
      MINOR: activity/fd: remove the dead_fd counter
      MAJOR: fd: get rid of the DWCAS when setting the running_mask
      CLEANUP: fd: remove the now unused fd_set_running()
      CLEANUP: fd: remove the now unneeded fd_mig_lock
      BUG/MINOR: server: update last_change on maint->ready transitions too
      ADMIN: dyncookie: implement a simple dynamic cookie calculator
      MINOR: http: add a new function http_validate_scheme() to validate a 
scheme
      BUG/MAJOR: h2: verify early that non-http/https schemes match the valid 
syntax
      BUG/MAJOR: h2: verify that :path starts with a '/' before concatenating it
      BUG/MAJOR: h2: enforce stricter syntax checks on the :method pseudo-header
      BUG/MEDIUM: h2: give :authority precedence over Host

---

Reply via email to