Hi,

HAProxy 1.9.1 was released on 2019/01/08. It added 90 new commits
after version 1.9.0.

One of them fixes a security issue discovered by Tim Düsterhus
(CVE-2018-20615) :

   BUG/CRITICAL: mux-h2: re-check the frame length when PRIORITY is used

An incorrect frame length check is performed on HEADERS frame having the
PRIORITY flag, possibly resulting in a read-past-bound which can cause a
crash depending how the frame is crafted. All 1.9 and 1.8 versions are
affected. As a result, all HTTP/2 users must either upgrade or temporarily
disable HTTP/2 by commenting the "npn h2" and "alpn h2" statements on their
related "bind" lines.

This version also collects a number of significant bug fixes that were
reported since the release, among which :
  - risk of crashes when using HTTP reuse with more than 5 servers for
    a given session ;
  - occasional zombie connections when objects retrieved from the cache
    were compressed during delivery ;
  - some chunked-encoding inconsistencies between H1 on one side and H2
    on the other one in HTX mode ;
  - a few other HTX issues I honestly don't remember in details
  - a small number of lost event issues affecting the H1 and H2 muxes,
    possibly resulting in occasional timeouts and/or zombie connections

Lukas' update to redispatch connection failures when using consistent
hash was merged as well as eventhough it was not really a bug, it was at
least a counter-intuitive behaviour.

An annoying limitation was also reported and addressed : health checks
currently cannot use the H2 mux to send HTTP requests to H2 servers, but
since the ALPN string is set per server, it wasn't possible to force
these checks to at least rely on HTTPS instead. A new "check-alpn"
directive was added to allow to specify the ALPN string to advertise for
checks to address this.

A number of updates were merged to the regression testing suite since it
helps us a lot to reproduce bugs and improve reliability.

What's nice is that www.haproxy.org has been running on this code since
the release with only very minor glitches (a few tens of zombie connections
a week due to the compression+cache issue etc) and doesn't show any sign of
trouble anymore after these fixes.

I intend to issue 1.9.2 soon (possibly next week) with a small bunch of
additional minor fixes that I didn't want to mix with this version. In
addition I managed to implement the long-missing support for H2
CONTINUATION frames and trailers which are sufficiently low risk to be
backported. Thanks to these, h2spec now reports zero error, and gRPC
works out of the box through HAProxy :-)  Thus unless someone steps up
with a good objection to these being backported into 1.9, we'll do it.

Anyway, please don't forget to update!

Please find the usual URLs below :
   Site index       : http://www.haproxy.org/
   Discourse        : http://discourse.haproxy.org/
   Slack channel    : https://slack.haproxy.org/
   Sources          : http://www.haproxy.org/download/1.9/src/
   Git repository   : http://git.haproxy.org/git/haproxy-1.9.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy-1.9.git
   Changelog        : http://www.haproxy.org/download/1.9/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Alex Zorin (1):
      MINOR: payload: add sample fetch for TLS ALPN

Christopher Faulet (36):
      BUG/MAJOR: stream-int: Update the stream expiration date in 
stream_int_notify()
      BUG/MINOR: compression/htx: Don't compress responses with unknown body 
length
      BUG/MINOR: compression/htx: Don't add the last block of data if it is 
empty
      MINOR: channel: Add the function channel_add_input
      MINOR: stats/htx: Call channel_add_input instead of updating channel 
state by hand
      BUG/MEDIUM: cache: Be sure to end the forwarding when XFER length is 
unknown
      BUG/MAJOR: htx: Return the good block address after a defrag
      BUG/MEDIUM: mux-h1: Add a task to handle connection timeouts
      BUG/MEDIUM: proto-htx: Set SI_FL_NOHALF on server side when request is 
done
      REGTEST: Require the option LUA to run lua tests
      REGTEST: script: Process script arguments before everything else
      REGTEST: script: Evaluate the varnishtest command to allow quoted 
parameters
      REGTEST: script: Add the option --clean to remove previous log direcotries
      REGTEST: script: Add the option --debug to show logs on standard ouput
      REGTEST: script: Add the option --keep-logs to keep all log directories
      REGTEST: script: Add the option --use-htx to enable the HTX in regtests
      REGTEST: script: Print only errors in the results report
      REGTEST: Add option to use HTX prefixed by the macro 'no-htx'
      REGTEST: script: Add support of alternatives in requited options list
      REGTEST: Add a basic test for the compression
      BUG/MINOR: cache/htx: Be sure to count partial trailers
      MINOR: stream/htx: Add info about the HTX structs in "show sess all" 
command
      MINOR: stream: Add the subscription events of SIs in "show sess all" 
command
      MINOR: mux-h1: Add the subscription events in "show fd" command
      MINOR: htx: Add an helper function to get the max space usable for a block
      MINOR: channel/htx: Add HTX version for some helper functions
      BUG/MEDIUM: cache/htx: Respect the reserve when cached objects are served
      BUG/MINOR: stats/htx: Respect the reserve when the stats page is dumped
      BUG/MINOR: mux-h1: Close connection on shutr only when shutw was really 
done
      MEDIUM: mux-h1: Clarify how shutr/shutw are handled
      BUG/MINOR: compression: Disable it if another one is already in progress
      BUG/MINOR: filters: Detect cache+compression config on legacy HTTP streams
      BUG/MINOR: cache: Disable the cache if any compression filter precedes it
      MINOR: htx: Add a function to truncate all blocks after a specific offset
      MINOR: channel/htx: Add the HTX version of channel_truncate/erase
      BUG/MINOR: proto_htx: Use HTX versions to truncate or erase a buffer

Frédéric Lécaille (8):
      REGTEST: A basic test for "http-buffer-request"
      REGTEST: Add a reg test for health-checks over SSL/TLS.
      REGTEST: Make reg-tests target support argument.
      REGTEST: Fix a typo about barrier type.
      REGTEST: Be less Linux specific with a syslog regex.
      REGTEST: Missing enclosing quotes for ${tmpdir} macro.
      REGTEST: Exclude freebsd target for some reg tests.
      REGTEST: Add some informatoin to test results.

Jarno Huuskonen (2):
      DOC: Fix typo in req.ssl_alpn example (commit 4afdd138424ab...)
      DOC: http-request cache-use / http-response cache-store expects cache name

Jérôme Magnin (2):
      BUG/MEDIUM: dns: Don't prevent reading the last byte of the payload in 
dns_validate_response()
      BUG/MINOR: htx: send the proper authenticate header when using 
http-request auth

Nikhil Agrawal (1):
      BUG/MEDIUM: dns: overflowed dns name start position causing invalid dns 
error

Olivier Houchard (17):
      BUG/MEDIUM: tasks: Decrement tasks_run_queue in tasklet_free().
      BUG/MAJOR: connections: Close the connection before freeing it.
      BUG/MEDIUM: h2: Don't forget to quit the sending_list if 
SUB_CALL_UNSUBSCRIBE.
      BUG/MEDIUM: mux_h2: Don't add to the idle list if we're full.
      BUG/MEDIUM: server: Also copy "check-sni" for server templates.
      BUG/MEDIUM: servers: Don't try to reuse connection if we switched server.
      BUG/MEDIUM: servers: Fail if we fail to allocate a conn_stream.
      BUG/MAJOR: servers: Use the list api correctly to avoid crashes.
      BUG/MAJOR: servers: Correctly use LIST_ELEM().
      BUG/MAJOR: sessions: Use an unlimited number of servers for the conn list.
      BUG/MEDIUM: servers: Flag the stream_interface on handshake error.
      MEDIUM: servers: Be smarter when switching connections.
      MINOR: ssl: Add ssl_sock_set_alpn().
      MEDIUM: checks: Add check-alpn.
      MEDIUM: mux_h1: Implement h1_show_fd.
      BUG/MEDIUM: h1: In h1_init(), wake the tasklet instead of calling 
h1_recv().
      BUG/MEDIUM: server: Defer the mux init until after xprt has been 
initialized.

PiBa-NL (1):
      REGTEST: mailers: add new test for 'mailers' section

Thierry FOURNIER (2):
      BUG/MINOR: lua: bad args are returned for Lua actions
      BUG/MEDIUM: lua: dead lock when Lua tasks are trigerred

Willy Tarreau (20):
      BUG/MEDIUM: log: don't mark log FDs as non-blocking on terminals
      BUG/MEDIUM: mux-h2: Don't forget to quit the send list on error reports
      BUG/MEDIUM: mux-h2: don't needlessly wake up the demux on short frames
      MINOR: mux-h2: only increase the connection window with the first update
      REGTESTS: remove the expected window updates from H2 handshakes
      BUG/MINOR: mux-h2: make empty HEADERS frame return a connection error
      BUG/MEDIUM: mux-h2: mark that we have too many CS once we have more than 
the max
      BUG/MEDIUM: mux-h2: always restart reading if data are available
      BUG/MINOR: mux-h2: don't check the CS count in h2c_bck_handle_headers()
      BUG/MEDIUM: mux-h1: use per-direction flags to indicate transitions
      BUG/MEDIUM: mux-h1: make HTX chunking consistent with H2
      MINOR: mux-h1: parse the content-length header on output and set 
H1_MF_CLEN
      BUG/MEDIUM: mux-h1: don't enforce chunked encoding on requests
      MINOR: lb: allow redispatch when using consistent hash
      MINOR: stream/htx: add the HTX flags output in "show sess all"
      MINOR: stream/cli: fix the location of the waiting flag in "show sess all"
      MINOR: stream/cli: report more info about the HTTP messages on "show sess 
all"
      BUG/MEDIUM: cli: make "show sess" really thread-safe
      DOC: regtest: make it clearer what the purpose of the "broken" series is
      BUG/CRITICAL: mux-h2: re-check the frame length when PRIORITY is used

---

Reply via email to