Hi,

HAProxy 2.0-dev1 was released on 2019/02/26. It added 363 new commits
after version 1.9.0.

Given that things are cooling down and we've addressed a large number of
issues, I think it's the right moment to emit a 2.0-dev1 version. This
will allow many of us to more confidently upgrade to something that seems
to reasonably work and from there start to experiment with upcoming new
stuff.

This version is very similar to the latest 1.9-stable. In addition to
what's found in 1.9, here are the main updates :
  - SSL support for peers. Peers sections now support "bind" and
    "server" lines with all the relevant keywords, so that it's now
    technically possible to use SSL, bind them to an interface, etc.

  - support for MAX_THREADS and MAX_PROCS at build time, to avoid
    needlessly allocating huge structs, which is especially true for
    embedded devices (e.g. no need to support MAX_THREADS=64 on most
    OpenWRT devices).

  - nbproc / nbthread exclusion : while it used to be *technically*
    possible to start multiple processes and multiple threads per
    process, it complicates lots of things in the code and really
    has no value at all since it keeps the limitations of nbproc. It
    also causes some important performance degradations due to threads
    competing to run on same CPUs. As of now we'll have to choose whether
    to use nbproc or nbthread. Given the last tests I've run on threads,
    I don't see a value in staying on nbproc, really.

  - development (or jokes ?) : there's a new build option DEBUG_FAIL_ALLOC
    to make memory allocations randomly fail with a given percentage. This
    is a kind of fault injection to help detect unhandled errors and make
    the code more robust.

  - there is a Prometheus stats exporter in the contrib/ directory. From
    what I've understood, its main value compared to the one provided by
    Prometheus is that it should be lighter because it doesn't need to
    buffer all the stats output (the output needs to be transposed compared
    to regular stats).

  - the 51Degrees device identification code is now compatible with nbthread.

  - the H2 max-frame-size setting is configurable.

  - external checks now use closefrom() to close all FDs when available,
    or use a variant which is about twice as fast as the close() loop.
    Well better not use external checks when dealing with many FDs
    anyway.

  - a new "ungrpc" sample fetch function to extract any given field from
    a gRPC body. This can be used to perform stickiness or content
    switching between API servers for example. Note: this part is still
    subject to evolve (it will likely be turned into a converter, and
    possibly more converters will come, or some arguments to enforce the
    output format, we'll see). Those interested on the subject are welcome
    to give it a try and suggest the best way to move forward.

  - the usual number of code cleanups and reorganization

  - the very latest bug fixes (it's one of these rare but ephemeral instants
    where a dev version is more stable than the previous stable release :-)).

Now for the next steps, there are already some pending performance
improvements on the listeners, the HTX and the connection pool areas in the
pipe that are waiting for this release to be done before being merged. Later
I know that I have to rework some parts of the H2 send path to be able to
support priorities and stream dependencies. Some connection layering is being
reworked in order to more easily stack processing/filtering (SSL should become
one such layer and not its own transport anymore). I remember some discussions
about reworking the whole SSL certificate storage so as to deduplicate them
on initial load (save huge amounts of memory and load time) and allow to
update them on the fly as Aurélien started several months ago. I also
remember discussions about log profiles to simplify log-format and have
the ability to have a different format per server (i.e. send in one format
to ELK and another one to the local syslog). If I had a few days to spare
on this I'd seek all this info and fill the GitHub issues with them. I'll
probably do anyway :-)

I've just deployed it on haproxy.org, which has been running many -dev0
over the last 2 months. So far so good.

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
   Sources          : http://www.haproxy.org/download/2.0/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.0/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

Ben51Degrees (3):
      BUG: 51d: Changes to the buffer API in 1.9 were not applied to the 
51Degrees code.
      BUG: 51d: In Hash Trie, multi header matching was affected by the header 
names stored globaly.
      MEDIUM: 51d: Enabled multi threaded operation in the 51Degrees module.

Bertrand Jacquin (2):
      DOC: ssl: Clarify when pre TLSv1.3 cipher can be used
      DOC: ssl: Stop documenting ciphers example to use

Christopher Faulet (51):
      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/MAJOR: stream-int: Update the stream expiration date in 
stream_int_notify()
      BUG/MEDIUM: proto-htx: Set SI_FL_NOHALF on server side when request is 
done
      BUG/MEDIUM: mux-h1: Add a task to handle connection timeouts
      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
      BUG/MEDIUM: h1: Get the h1m state when restarting the headers parsing
      BUG/MINOR: cache/htx: Be sure to count partial trailers
      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
      BUG/MINOR: lua/htx: Respect the reserve when data are send from an HTX 
applet
      MINOR: spoe: Make the SPOE filter compatible with HTX proxies
      BUG/MEDIUM: stats: Get the right scope pointer depending on HTX is used 
or not
      BUG/MINOR: check: Wake the check task if the check is finished in 
wake_srv_chk()
      BUG/MINOR: proto-htx: Return an error if all headers cannot be received 
at once
      BUG/MEDIUM: mux-h2/htx: Respect the channel's reserve
      BUG/MINOR: mux-h1: Apply the reserve on the channel's buffer only
      BUG/MEDIUM: mux-h1: Don't add "transfer-encoding" if message-body is 
forbidden
      BUG/MAJOR: htx/backend: Make all tests on HTTP messages compatible with 
HTX
      BUG/MAJOR: spoe: Don't try to get agent config during SPOP healthcheck
      BUG/MINOR: config: Reinforce validity check when a process number is 
parsed
      CONTRIB: contrib/prometheus-exporter: Add a Prometheus exporter for 
HAProxy
      BUG/MEDIUM: proto_htx: Fix data size update if end of the cookie is 
removed
      BUG/MEDIUM: mux-h2/htx: Always set CS flags before exiting h2_rcv_buf()
      MINOR: h2/htx: Set the flag HTX_SL_F_BODYLESS for messages without body
      BUG/MINOR: mux-h1: Add "transfer-encoding" header on outgoing requests if 
needed
      BUG/MINOR: mux-h2: Don't add ":status" pseudo-header on trailers
      BUG/MINOR: proto-htx: Consider a XFER_LEN message as chunked by default
      BUG/MEDIUM: h2/htx: Correctly handle interim responses when HTX is enabled
      MINOR: mux-h2: Set HTX extra value when possible
      BUG/MEDIUM: mux-h1: Report the right amount of data xferred in 
h1_rcv_buf()
      BUG/MINOR: channel: Set CF_WROTE_DATA when outgoing data are skipped
      MINOR: htx: Add function to drain data from an HTX message
      MINOR: channel/htx: Add function to skips output bytes from an HTX channel
      BUG/MAJOR: cache/htx: Set the start-line offset when a cached object is 
served
      BUG/MEDIUM: cache: Get objects from the cache only for GET and HEAD 
requests
      BUG/MINOR: cache/htx: Return only the headers of cached objects to HEAD 
requests

Daniel Corbett (1):
      BUG/MEDIUM: init: Initialize idle_orphan_conns for first server in 
server-template

David Carlier (1):
      BUILD/MEDIUM: da: Necessary code changes for new buffer API.

Dirkjan Bussink (1):
      BUG/MEDIUM: ssl: Fix handling of TLS 1.3 KeyUpdate messages

Dragan Dosen (2):
      BUG/MEDIUM: http_fetch: fix the "base" and "base32" fetch methods in HTX 
mode
      BUG/MEDIUM: http_fetch: fix "req.body_len" and "req.body_size" fetch 
methods in HTX mode

Emeric Brun (3):
      BUG/MINOR: base64: dec func ignores padding for output size checking
      BUG/MEDIUM: ssl: missing allocation failure checks loading tls key file
      MINOR: ssl: add support of aes256 bits ticket keys on file and cli.

Frédéric Lécaille (4):
      REGTEST: Add a reg test for health-checks over SSL/TLS.
      REGTEST: "capture (request|response)" regtest.
      REGTEST: Switch to vtest.
      REGTEST: Adapt reg test doc files to vtest.

Frédéric Lécaille (28):
      REGTEST: Add some informatoin to test results.
      MINOR: cfgparse: Extract some code to be re-used.
      CLEANUP: cfgparse: Return asap from cfg_parse_peers().
      CLEANUP: cfgparse: Code reindentation.
      MINOR: cfgparse: Useless frontend initialization in "peers" sections.
      MINOR: cfgparse: Rework peers frontend init.
      MINOR: cfgparse: Simplication.
      MINOR: cfgparse: Make "peer" lines be parsed as "server" lines.
      MINOR: peers: Make outgoing connection to SSL/TLS peers work.
      MINOR: cfgparse: SSL/TLS binding in "peers" sections.
      DOC: peers: SSL/TLS documentation for "peers"
      MINOR: peers: Extract some code to be reused.
      CLEANUP: peers: Indentation fixes.
      MINOR: peers: send code factorization.
      MINOR: peers: Add new functions to send code and reduce the I/O handler.
      MEDIUM: peers: synchronizaiton code factorization to reduce the size of 
the I/O handler.
      MINOR: peers: Move update receive code to reduce the size of the I/O 
handler.
      MINOR: peers: Move ack, switch and definition receive code to reduce the 
size of the I/O handler.
      MINOR: peers: Move high level receive code to reduce the size of I/O 
handler.
      CLEANUP: peers: Be more generic.
      MINOR: peers: move error handling to reduce the size of the I/O handler.
      MINOR: peers: move messages treatment code to reduce the size of the I/O 
handler.
      MINOR: peers: move send code to reduce the size of the I/O handler.
      CLEANUP: peers: Remove useless statements.
      MINOR: peers: move "hello" message treatment code to reduce the size of 
the I/O handler.
      MINOR: peers: move peer initializations code to reduce the size of the 
I/O handler.
      BUG/MEDIUM: peers: Peer addresses parsing broken.
      BUG/MEDIUM: peers: Missing peer initializations.

Jarno Huuskonen (6):
      DOC: Fix typo in req.ssl_alpn example (commit 4afdd138424ab...)
      DOC: http-request cache-use / http-response cache-store expects cache name
      REGTESTS: test case for map_regm commit 271022150d
      REGTESTS: Basic tests for concat,strcmp,word,field,ipmask converters
      REGTESTS: Basic tests for using maps to redirect requests / select backend
      DOC: REGTESTS README varnishtest -Dno-htx= define.

Jérôme Magnin (3):
      BUG/MINOR: htx: send the proper authenticate header when using 
http-request auth
      DOC: add a missing space in the documentation for bc_http_major
      BUG/MINOR: server: don't always trust srv_check_health when loading a 
server state

Kevin Zhu (1):
      BUG/MINOR: deinit: tcp_rep.inspect_rules not deinit, add to deinit

Lukas Tribus (1):
      DOC: add github issue templates

Miroslav Zagorac (1):
      BUG/MINOR: spoe: corrected fragmentation string size

Olivier Houchard (40):
      BUG/MEDIUM: servers: Don't try to reuse connection if we switched server.
      BUG/MEDIUM: tasks: Decrement tasks_run_queue in tasklet_free().
      BUG/MEDIUM: mux_h2: Don't add to the idle list if we're full.
      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.
      MEDIUM: sessions: Keep track of which connections are idle.
      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.
      MINOR: connections: Remove a stall comment.
      BUG/MEDIUM: ssl: Disable anti-replay protection and set max data with 
0RTT.
      DOC: Be a bit more explicit about allow-0rtt security implications.
      MINOR: checks: Store the proxy in checks.
      BUG/MEDIUM: checks: Avoid having an associated server for email checks.
      BUG/MEDIUM: h1: Make sure we destroy an inactive connectin that did shutw.
      BUG/MEDIUM: servers: Make assign_tproxy_address work when ALPN is set.
      BUG/MEDIUM: connections: Add the CO_FL_CONNECTED flag if a send succeeded.
      BUG/MEDIUM: servers: Attempt to reuse an unfinished connection on retry.
      BUG/MEDIUM: checks: Check that conn_install_mux succeeded.
      BUG/MEDIUM: servers: Only destroy a conn_stream we just allocated.
      BUG/MEDIUM: servers: Don't add an incomplete conn to the server idle list.
      BUG/MEDIUM: checks: Don't try to set ALPN if connection failed.
      BUG/MEDIUM: h2: In h2_send(), stop the loop if we failed to alloc a buf.
      BUG/MEDIUM: peers: Handle mux creation failure.
      BUG/MEDIUM: servers: Close the connection if we failed to install the mux.
      BUG/MEDIUM: buffer: Make sure b_is_null handles buffers waiting for 
allocation.
      BUG/MEDIUM: connections: Don't forget to remove CO_FL_SESS_IDLE.
      MINOR: xref: Add missing barriers.
      MINOR: muxes: Don't bother to LIST_DEL(&conn->list) before calling 
conn_free().
      MINOR: debug: Add an option that causes random allocation failures.
      BUG/MINOR: tune.fail-alloc: Don't forget to initialize ret.
      BUG/MEDIUM: stream: Don't forget to free s->unique_id in stream_free().
      BUILD/MEDIUM: initcall: Fix build on MacOS.
      BUG/MEDIUM: servers: Use atomic operations when handling curr_idle_conns.
      BUG/MEDIUM: servers: Add a per-thread counter of idle connections.
      BUG/MAJOR: listener: Make sure the listener exist before using it.
      MINOR: fd: Use closefrom() as my_closefrom() if supported.

PiBa-NL (3):
      REGTEST: mailers: add new test for 'mailers' section
      REGTEST: filters: add compression test
      REGTEST: checks basic stats webpage functionality

Richard Russo (1):
      BUG/MAJOR: fd/threads, task/threads: ensure all spin locks are unlocked

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

Tim Duesterhus (4):
      BUG/MINOR: stick_table: Prevent conn_cur from underflowing
      CLEANUP: h2: Remove debug printf in mux_h2.c
      BUG/MEDIUM: compression: Rewrite strong ETags
      DOC: compression: Update the reasons for disabled compression

Uman Shahzad (1):
      BUG/MINOR: startup: certain goto paths in init_pollers fail to free

Willy Tarreau (165):
      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
      MEDIUM: mux-h2: remove padlen during headers phase
      MINOR: h2: add a bit-based frame type representation
      MINOR: mux-h2: remove useless check for empty frame length in 
h2s_decode_headers()
      MEDIUM: mux-h2: decode HEADERS frames before allocating the stream
      MINOR: mux-h2: make h2c_send_rst_stream() use the dummy stream's error 
code
      MINOR: mux-h2: add a new dummy stream for the REFUSED_STREAM error code
      MINOR: mux-h2: fail stream creation more cleanly using RST_STREAM
      MINOR: buffers: add a new b_move() function
      MINOR: mux-h2: make h2_peek_frame_hdr() support an offset
      MEDIUM: mux-h2: handle decoding of CONTINUATION frames
      CLEANUP: mux-h2: remove misleading comments about CONTINUATION
      BUG/MEDIUM: log: don't mark log FDs as non-blocking on terminals
      MINOR: lb: allow redispatch when using consistent hash
      CLEANUP: mux-h2: fix end-of-stream flag name when processing headers
      BUG/MEDIUM: mux-h2: always restart reading if data are available
      BUG/MINOR: mux-h2: set the stream-full flag when leaving 
h2c_decode_headers()
      BUG/MINOR: mux-h2: don't check the CS count in h2c_bck_handle_headers()
      BUG/MINOR: mux-h2: mark end-of-stream after processing response HEADERS, 
not before
      BUG/MINOR: mux-h2: only update rxbuf's length for H1 headers
      BUG/MEDIUM: mux-h1: use per-direction flags to indicate transitions
      BUG/MEDIUM: mux-h1: make HTX chunking consistent with H2
      MINOR: mux-h2: make h2c_decode_headers() return a status, not a count
      MINOR: mux-h2: add a new dummy stream : h2_error_stream
      MEDIUM: mux-h2: make h2c_decode_headers() support recoverable errors
      BUG/MINOR: mux-h2: detect when the HTX EOM block cannot be added after 
headers
      MINOR: mux-h2: remove a misleading and impossible test
      CLEANUP: mux-h2: clean the stream error path on HEADERS frame processing
      MINOR: mux-h2: check for too many streams only for idle streams
      MINOR: mux-h2: set H2_SF_HEADERS_RCVD when a HEADERS frame was decoded
      BUG/MEDIUM: mux-h2: decode trailers in HEADERS frames
      MINOR: h2: add h2_make_h1_trailers to turn H2 headers to H1 trailers
      MEDIUM: mux-h2: pass trailers to H1 (legacy mode)
      MINOR: htx: add a new function to add a block without filling it
      MINOR: h2: add h2_make_htx_trailers to turn H2 headers to HTX trailers
      MEDIUM: mux-h2: pass trailers to HTX
      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: mux-h2: make HTX_BLK_EOM processing idempotent
      MINOR: h1: make the H1 headers block parser able to parse headers only
      MEDIUM: mux-h2: emit HEADERS frames when facing HTX trailers blocks
      BUG/MEDIUM: cli: make "show sess" really thread-safe
      BUILD: add a new file "version.c" to carry version updates
      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"
      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
      MINOR: mux-h1: make the mux_h1_ops struct static
      BUILD: makefile: add an EXTRA_OBJS variable to help build optional code
      BUG/MEDIUM: connection: properly unregister the mux on failed 
initialization
      BUG/MAJOR: cache: fix confusion between zero and uninitialized cache key
      BUG/MINOR: backend: don't use url_param_name as a hint for BE_LB_ALGO_PH
      BUG/MINOR: backend: balance uri specific options were lost across defaults
      BUG/MINOR: backend: BE_LB_LKUP_CHTREE is a value, not a bit
      MINOR: backend: move url_param_name/len to lbprm.arg_str/len
      MINOR: backend: make headers and RDP cookie also use arg_str/len
      MINOR: backend: add new fields in lbprm to store more LB options
      MINOR: backend: make the header hash use arg_opt1 for use_domain_only
      MINOR: backend: remap the balance uri settings to lbprm.arg_opt{1,2,3}
      MINOR: backend: move hash_balance_factor out of chash
      MEDIUM: backend: move all LB algo parameters into an union
      MINOR: backend: make the random algorithm support a number of draws
      BUG/MEDIUM: checks: fix recent regression on agent-check making it crash
      DOC: mention the effect of nf_conntrack_tcp_loose on src/dst
      BUG/MINOR: mux-h1: avoid copying output over itself in zero-copy
      BUG/MAJOR: mux-h2: don't destroy the stream on failed allocation in 
h2_snd_buf()
      BUG/MEDIUM: backend: also remove from idle list muxes that have no more 
room
      BUG/MEDIUM: mux-h2: properly abort on trailers decoding errors
      MINOR: h2: declare new sets of frame types
      BUG/MINOR: mux-h2: CONTINUATION in closed state must always return GOAWAY
      BUG/MINOR: mux-h2: headers-type frames in HREM are always a connection 
error
      BUG/MINOR: mux-h2: make it possible to set the error code on an already 
closed stream
      BUG/MINOR: hpack: return a compression error on invalid table size updates
      MINOR: server: make sure pool-max-conn is >= -1
      BUG/MINOR: stream: take care of synchronous errors when trying to send
      CLEANUP: server: fix indentation mess on idle connections
      BUG/MINOR: mux-h2: always check the stream ID limit in h2_avail_streams()
      BUG/MINOR: mux-h2: refuse to allocate a stream with too high an ID
      BUG/MEDIUM: backend: never try to attach to a mux having no more stream 
available
      MINOR: server: add a max-reuse parameter
      MINOR: mux-h2: always consider a server's max-reuse parameter
      MEDIUM: stream-int: always mark pending outgoing SI_ST_CON
      MINOR: stream: don't wait before retrying after a failed connection reuse
      MEDIUM: h2: always parse and deduplicate the content-length header
      BUG/MINOR: mux-h2: always compare content-length to the sum of DATA frames
      MINOR: cfgparse: make the process/thread parser support a maximum value
      MINOR: threads: make MAX_THREADS configurable at build time
      DOC: nbthread is no longer experimental.
      BUG/MINOR: listener: always fill the source address for accepted 
socketpairs
      BUG/MINOR: mux-h2: do not report available outgoing streams after GOAWAY
      BUG/MINOR: task: fix possibly missed event in inter-thread wakeups
      BUG/MEDIUM: backend: always call si_detach_endpoint() on async connection 
failure
      SCRIPTS: add the issue tracker URL to the announce script
      CLEANUP: peers: factor the error handling code in peer_treet_updatemsg()
      CLEANUP: peers: factor error handling in peer_treat_definedmsg()
      BUILD/MINOR: peers: shut up a build warning introduced during last cleanup
      BUG/MEDIUM: mux-h2: only close connection on request frames on closed 
streams
      CLEANUP: mux-h2: remove two useless but misleading assignments
      CLEANUP: mux-h2: remove misleading leftover test on h2s' nullity
      BUG/MEDIUM: mux-h2: wake up flow-controlled streams on initial window 
update
      BUG/MEDIUM: mux-h2: fix two half-closed to closed transitions
      BUG/MEDIUM: mux-h2: make sure never to send GOAWAY on too old streams
      BUG/MEDIUM: mux-h2: do not abort HEADERS frame before decoding them
      BUG/MINOR: mux-h2: make sure response HEADERS are not received in other 
states than OPEN and HLOC
      MINOR: h2: add a generic frame checker
      MEDIUM: mux-h2: check the frame validity before considering the stream 
state
      CLEANUP: mux-h2: remove stream ID and frame length checks from the frame 
parsers
      BUG/MINOR: mux-h2: make sure request trailers on aborted streams don't 
break the connection
      DOC: htx: make it clear that htxbuf() and htx_from_buf() always return 
valid pointers
      MINOR: htx: never check for null htx pointer in htx_is_{,not_}empty()
      MINOR: mux-h2: consistently rely on the htx variable to detect the mode
      BUG/MINOR: stream: don't close the front connection when facing a backend 
error
      BUG/MEDIUM: mux-h2: wait for the mux buffer to be empty before closing 
the connection
      MINOR: stream-int: add a new flag to mention that we want the connection 
to be killed
      MINOR: connstream: have a new flag CS_FL_KILL_CONN to kill a connection
      BUG/MEDIUM: mux-h2: do not close the connection on aborted streams
      BUG/MINOR: server: fix logic flaw in idle connection list management
      MINOR: mux-h2: max-concurrent-streams should be unsigned
      MINOR: mux-h2: make sure to only check concurrency limit on the frontend
      MINOR: mux-h2: learn and store the peer's advertised 
MAX_CONCURRENT_STREAMS setting
      BUG/MEDIUM: mux-h2: properly consider the peer's advertised 
max-concurrent-streams
      BUG/MEDIUM: backend: always release the previous connection into its own 
target srv_list
      BUG/MEDIUM: htx: check the HTX compatibility in dynamic use-backend rules
      BUG/MINOR: backend: check srv_conn before dereferencing it
      BUG/MEDIUM: mux-h2: always omit :scheme and :path for the CONNECT method
      BUG/MEDIUM: mux-h2: always set :authority on request output
      BUG/MINOR: threads: fix the process range of thread masks
      BUG/MINOR: config: fix bind line thread mask validation
      CLEANUP: threads: fix misleading comment about all_threads_mask
      CLEANUP: threads: use nbits to calculate the thread mask
      OPTIM: listener: optimize cache-line packing for struct listener
      MINOR: tools: improve the popcount() operation
      MINOR: config: keep an all_proc_mask like we have all_threads_mask
      MINOR: global: add proc_mask() and thread_mask()
      MINOR: config: simplify bind_proc processing using proc_mask()
      MINOR: threads: make use of thread_mask() to simplify some thread 
calculations
      BUG/MINOR: compression: properly report compression stats in HTX mode
      BUG/MINOR: task: close a tiny race in the inter-thread wakeup
      BUG/MAJOR: config: verify that targets of track-sc and stick rules are 
present
      BUG/MAJOR: spoe: verify that backends used by SPOE cover all their 
callers' processes
      BUG/MINOR: config: make sure to count the error on incorrect 
track-sc/stick rules
      BUG/MINOR: spoe: do not assume agent->rt is valid on exit
      BUG/MINOR: lua: initialize the correct idle conn lists for the SSL sockets
      BUG/MEDIUM: spoe: initialization depending on nbthread must be done last
      BUG/MEDIUM: server: initialize the idle conns list after parsing the 
config
      BUG/MEDIUM: server: initialize the orphaned conns lists and tasks at the 
end
      MINOR: config: make MAX_PROCS configurable at build time
      BUG/MEDIUM: peers: check that p->srv actually exists before using 
p->srv->use_ssl
      BUG/MINOR: mux-h1: verify the request's version before dropping 
connection: keep-alive
      BUG/MAJOR: stream: avoid double free on unique_id
      BUILD/MINOR: stream: avoid a build warning with threads disabled
      BUILD/MINOR: tools: fix build warning in the date conversion functions
      BUILD/MINOR: peers: remove an impossible null test in intencode()
      BUILD/MINOR: htx: fix some potential null-deref warnings with 
http_find_stline
      BUG/MEDIUM: htx: count the amount of copied data towards the final count
      MINOR: mux-h2: make the H2 MAX_FRAME_SIZE setting configurable
      BUG/MEDIUM: mux-h2/htx: send an empty DATA frame on empty HTX trailers
      MINOR: fd: add a new my_closefrom() function to close all FDs
      MINOR: checks: use my_closefrom() to close all FDs
      MINOR: fd: implement an optimised my_closefrom() function
      BUG/MINOR: fd: make sure my_closefrom() doesn't miss some FDs

---

Reply via email to