Hi,
HAProxy 2.1-dev2 was released on 2019/10/01. It added 399 new commits
after version 2.1-dev1.
Yes, I know. 2.1-dev1 was 2.5 months ago and now we're one-off from 400
commits just for dev2. It is quite a mess. The reality is that we've been
spending an insane amount of time away from coding, just doing nasty bug
chasing. Most of those who know me by now know how this drives me nuts,
because instead of spending time rebuilding the things that are falling
apart, we're planting a few nails here and there so that it lasts for yet
another release. There are still some pending bugs but since this is a
never-ending game and we've merged quite some features, I prefer to issue
dev2 now and ease testing than wait for the magical bug-free day.
The positive thing is that some very long-lasting issues related to aborted
H2 requests and uploads are now dead, and that the checks, eventhough the
code it getting uglier each week, now work much better. But all that still
needs to be done to address the shutdown vs abort issues, idle connections
sharing, sending of H2 CONTINUATION frames to support large response headers
in H2 and the complete rewrite of the checks... all these still have to be
done and most of them will definitely not be for 2.1 anymore.
But overall I'm staying positive. Killing a bug is still an improvement.
Since 2.1-dev1, we killed 124 of them, that's almost 2 per day including
week-ends, which is quite an amazing score, especially for a vacation
period!
And since I'm not seeing this trend go significantly down and predict some
of us will have less time to spend on this with the upcoming conference,
I'd like to urge a code freeze very soon. I'd have set it to yesterday but
doing so without prior notification is not friendly and it's my fault for
not having seen time fly this fast. So I'll take my share of the responsibility
for the situation and accept an extra delay... only for the stuff I've been
made aware of. Thus I proclaim that I'm not going to take anything that I've
not yet been told about right now, and will stop taking impacting changes
past Sunday 13th this month so that we can mostly focus on fixing issues,
polishing docs and adding more regtests if possible. Note that this must
not be used as an excuse for sending half-tested crap and hoping to fix it
later.
Now let's have a look at the new goodies in this version :
- HTX is now the only supported HTTP mode, the old "legacy" mode was
now removed. Good riddance, less maintenance hell! This remains
transparent, unless you try to specify "no option http-use-htx"
where you'll get an error.
- removal of rsprep / reqrep etc... These were the oldest rules, still
applying to a whole HTTP line (header or not). Not only they were not
very reliable to use (syntax, spaces, ...), but they required to emulate
a dummy request when dealing with H2, which didn't make any sense
anymore. Plus it was not possible to use case-sensitivity only on the
value without having it on the name...
- the HTTP/1 mux now supports remapping header names when dealing with a
bogus application that is having issues with case sensitivity. Please
see "h1-case-adjust" in the doc for this if you're dealing with such
issues.
- we now support connecting to FastCGI backends. This was a direct outcome
of supporting multiplexed connections everywhere, it was too tempting to
give it a try. This can help improve resource management for example by
limiting the number of concurrent requests much more accurately, and
reducing the number of containers deployed in certain environments when
a component such as nginx or lighttpd had to be deployed solely to serve
as an HTTP-to-FCGI gateway.
- the FD cache was completely removed. This was a leftover from the very
old "speculative I/O" mode allowing to save a lot of syscalls in
callbacks by keeping track of the last polling status. Now that our
I/Os are called from top to bottom, it's not needed anymore, and can
increase the performance up to ~20% on some artificially tailored
workloads, but I still expect 5-10% in real production.
- connections take much less memory as the source and destination
addresses are now dynamically allocated if needed. That's 128 to 256
bytes saved per connection and per side in the common case.
- the thread dump used in panic code can now show Lua backtraces, so that
in the event time is wasted in Lua (it should not, unless if you call
an external library), it is possible to know the exact line of the Lua
code that provoked this.
- a trace infrastructure was added to help collect information from the
field without having to recompile. Traces can be enabled from the CLI
and collect data from several places with varying levels of details,
and send them to stdio, log servers or ring buffers. As of dev2, the
only source is the H2 mux.
- as a bonus from the trace infrastructure, logs can now be sent to a ring
buffer (only one, 1 MB for now, just requires config keywords to create
more). This can be very convenient in some environments since just issuing
a "show events buf0" on the CLI will show everything, and adding "-w -n"
after it will work like "tail -f".
- the SSL certificate management was significantly reworked to centralize
certificate information so that certs are now loaded a single time even
if multiple bind lines use them, and perform way less system calls. This
is expected to substantially speed up loading of large setups where numbers
in the orders of 10k to 100k certs are used. Some extra improvements are
still pending on this (no more details, I'd rather avoid saying crap).
- a part of the scheduler was improved to support waking up tasklets
belonging to another thread. It is a necessary step to deal with inter-
thread idle connections, but allowed to simplify quite some parts of the
code and to speed up the accept() code.
- SPOE now sends a per-thread engine-id allowing to support async mode with
threads.
- the stats page can now be exported in JSON mode, finally!
- add new build target linux-glibc-legacy (for CentOS 6 and older)
- new sample fetches and converters: srv_queue, fc_pp_authority, uuid
- send-proxy-v2 can now send the authority, allowing to chain layers using
SNI.
I've intentionally skipped many entries as you can guess, the change log
is quite large, but this is what I spotted. And I skipped the 124 bugfixes
as they are not new features :-) Thanks to all participants for these
efforts, especially the detailed bug reports. Now it's the users' turn to
spot bugs and refill our bag!
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.1/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.1/src/CHANGELOG
Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/
Willy
---
Complete changelog :
Adis Nezirovic (1):
BUG/MINOR: Missing stat_field_names (since f21d17bb)
Anthonin Bonnefoy (1):
BUG/MINOR: Fix prometheus '# TYPE' and '# HELP' headers
Baptiste Assmann (3):
MINOR: cache: add method to cache hash
MINOR: cache: allow caching of OPTIONS request
BUG/MINOR: action: do-resolve does not yield on requests with body
Christopher Faulet (133):
MINOR: mux-h2: Don't adjust anymore the amount of data sent in
h2_snd_buf()
BUG/MINOR: http_fetch: Fix http_auth/http_auth_group when called from TCP
rules
BUG/MINOR: http_htx: Initialize HTX error messages for TCP proxies
BUG/MINOR: cache/htx: Make maxage calculation HTX aware
BUG/MINOR: hlua: Make the function txn:done() HTX aware
MINOR: proto_htx: Directly call htx_check_response_for_cacheability()
MINOR: proto_htx: Rely on the HTX function to apply a redirect rules
MINOR: proto_htx: Add the function htx_return_srv_error()
MINOR: backend/htx: Don't rewind output data to set the sni on a srv
connection
MINOR: proto_htx: Don't stop forwarding when there is a post-connect
processing
DOC: htx: Update comments in HTX files
CLEANUP: htx: Remove the unsued function htx_add_blk_type_size()
MINOR: htx: Deduce the number of used blocks from tail and head values
MINOR: htx: Use an array of char to store HTX blocks
MINOR: htx: Slightly update htx_dump() to report better messages
DOC: htx: Add internal documentation about the HTX
MAJOR: http: Deprecate and ignore the option "http-use-htx"
MEDIUM: mux-h2: Remove support of the legacy HTTP mode
CLEANUP: h2: Remove functions converting h2 requests to raw HTTP/1.1 ones
MINOR: connection: Remove the multiplexer protocol PROTO_MODE_HTX
MINOR: stream: Rely on HTX analyzers instead of legacy HTTP ones
MEDIUM: http_fetch: Remove code relying on HTTP legacy mode
MINOR: config: Remove tests on the option 'http-use-htx'
MINOR: stream: Remove tests on the option 'http-use-htx' in stream_new()
MINOR: proxy: Remove tests on the option 'http-use-htx' during H1 upgrade
MINOR: hlua: Remove tests on the option 'http-use-htx' to reject TCP
applets
MINOR: cache: Remove tests on the option 'http-use-htx'
MINOR: contrib/prometheus-exporter: Remove tests on the option
'http-use-htx'
CLEANUP: proxy: Remove the flag PR_O2_USE_HTX
MINOR: proxy: Don't adjust connection mode of HTTP proxies anymore
MEDIUM: backend: Remove code relying on the HTTP legacy mode
MEDIUM: hlua: Remove code relying on the legacy HTTP mode
MINOR: http_act: Remove code relying on the legacy HTTP mode
MEDIUM: cache: Remove code relying on the legacy HTTP mode
MEDIUM: compression: Remove code relying on the legacy HTTP mode
MINOR: flt_trace: Remove code relying on the legacy HTTP mode
MINOR: stats: Remove code relying on the legacy HTTP mode
MAJOR: filters: Remove code relying on the legacy HTTP mode
MINOR: stream: Remove code relying on the legacy HTTP mode
MAJOR: http: Remove the HTTP legacy code
MINOR: hlua: Remove useless test on TX_CON_WANT_* flags
MINOR: proto_http: Remove unused http txn flags
MINOR: proto_http: Remove the unused flag HTTP_MSGF_WAIT_CONN
CLEANUP: proto_http: Group remaining flags of the HTTP transaction
CLEANUP: channel: Remove the unused flag CF_WAKE_CONNECT
CLEANUP: proto_http: Remove unecessary includes and comments
CLEANUP: proto_http: Move remaining code from proto_http.c to proto_htx.c
REORG: proto_htx: Move HTX analyzers & co to http_ana.{c,h} files
BUG/MINOR: debug: Remove flags CO_FL_SOCK_WR_ENA/CO_FL_SOCK_RD_ENA
MINOR: proxy: Remove support of the option 'http-tunnel'
DOC: config: Update as a result of the legacy HTTP removal
MEDIUM: config: Remove parsing of req* and rsp* directives
MINOR: proxy: Remove the unused list of block rules
MINOR: proxy/http_ana: Remove unused req_exp/rsp_exp and req_add/rsp_add
lists
DOC: config: Remove unsupported req* and rsp* keywords
MINOR: global: Preset tune.max_http_hdr to its default value
MINOR: http: Don't store raw HTTP errors in chunks anymore
BUG/MINOR: session: Emit an HTTP error if accept fails only for H1
connection
BUG/MINOR: session: Send a default HTTP error if accept fails for a H1
socket
CLEANUP: mux-h2: Remove unused flags H2_SF_CHNK_*
MINOR: config: Warn only if the option http-use-htx is used with "no"
prefix
BUG/MEDIUM: mux-h1: Trim excess server data at the end of a transaction
BUG/MINOR: mux-h1: Close server connection if input data remains in
h1_detach()
BUG/MINOR: http_ana: Be sure to have an allocated buffer to generate an
error
BUG/MINOR: http_htx: Support empty errorfiles
MEDIUM: mux-h1: Add the support of headers adjustment for bogus HTTP/1
apps
BUG/MEDIUM: lb-chash: Fix the realloc() when the number of nodes is
increased
BUG/MINOR: hlua/htx: Reset channels analyzers when txn:done() is called
BUG/MEDIUM: hlua: Check the calling direction in lua functions of the
HTTP class
MINOR: hlua: Don't set request analyzers on response channel for lua
actions
MINOR: hlua: Add a flag on the lua txn to know in which context it can be
used
BUG/MINOR: hlua: Only execute functions of HTTP class if the txn is HTTP
ready
BUG/MINOR: htx: Fix free space addresses calculation during a block
expansion
BUG/MEDIUM: lb-chash: Ensure the tree integrity when server weight is
increased
BUG/MEDIUM: lua: Fix test on the direction to set the channel exp timeout
BUG/MINOR: stats: Wait the body before processing POST requests
BUG/MINOR: http-ana: Reset response flags when 1xx messages are handled
BUG/MINOR: h1: Properly reset h1m when parsing is restarted
BUG/MINOR: mux-h1: Fix size evaluation of HTX messages after headers
parsing
BUG/MINOR: mux-h1: Don't stop anymore input processing when the max is
reached
BUG/MINOR: mux-h1: Be sure to update the count before adding EOM after
trailers
BUG/MEDIUM: cache: Properly copy headers splitted on several shctx blocks
BUG/MEDIUM: cache: Don't cache objects if the size of headers is too big
BUG/MINOR: mux-h1: Fix a possible null pointer dereference in
h1_subscribe()
BUG/MINOR: mux-h1: Fix a UAF in cfg_h1_headers_case_adjust_postparser()
MINOR: contrib/prometheus-exporter: Report DRAIN/MAINT/NOLB status for
servers
BUG/MINOR: listener: Fix a possible null pointer dereference
BUG/MINOR: ssl: always check for ssl connection before getting its XPRT
context
MINOR: stats: Add JSON export from the stats page
BUG/MINOR: filters: Properly set the HTTP status code on analysis error
CLEANUP: mux-h2: Remove unused flag H2_SF_DATA_CHNK
BUG/MINOR: acl: Fix memory leaks when an ACL expression is parsed
BUG/MINOR: backend: Fix a possible null pointer dereference
BUG/MEDIUM: stick-table: Properly handle "show table" with a data type
argument
MINOR: htx: Add a flag on HTX message to report processing errors
MINOR: mux-h1: Report a processing error during output processing
MINOR: http-ana: Handle HTX errors first during message analysis
MINOR: http-ana: Remove err_state field from http_msg
MINOR: config: Support per-proxy and per-server deinit functions callbacks
MINOR: config: Support per-proxy and per-server post-check functions
callbacks
MINOR: http_fetch: Add sample fetches to get auth method/user/pass
MINOR: istbuf: Add the function b_isteqi()
MINOR: log: Provide a function to emit a log for an application
MINOR: http: Add function to parse value of the header Status
MEDIUM: mux-h1/h1-htx: move HTX convertion of H1 messages in dedicated
file
MINOR: h1-htx: Use the same function to copy message payload in all cases
MINOR: muxes/htx: Ignore pseudo header during message formatting
MINOR: fcgi: Add code related to FCGI protocol
MEDIUM: fcgi-app: Add FCGI application and filter
MEDIUM: mux-fcgi: Add the FCGI multiplexer
MINOR: doc: Add documentation about the FastCGI support
BUG/MINOR: build: Fix compilation of mux_fcgi.c when compiled without SSL
BUG/MINOR: mux-h2: Be sure to have a connection to unsubcribe
BUG/MINOR: mux-fcgi: Be sure to have a connection to unsubcribe
CLEANUP: fcgi-app: Remove useless test on fcgi_conf pointer
BUG/MINOR: mux-fcgi: Don't compare the filter name in its parsing callback
BUG/MAJOR: mux-h2: Handle HEADERS frames received after a RST_STREAM frame
BUG/MINOR: stream-int: Process connection/CS errors first in si_cs_send()
BUG/MEDIUM: stream-int: Process connection/CS errors during synchronous
sends
CLEANUP: mux-fcgi: Remove the unused function fcgi_strm_id()
BUG/MINOR: mux-fcgi: Use a literal string as format in app_log()
BUG/MINOR: mux-h2: Fix missing braces because of traces in h2_detach()
BUG/MINOR: mux-h2: Use the dummy error when decoding headers for a closed
stream
BUG/MAJOR: mux_h2: Don't consume more payload than received for skipped
frames
BUG/MINOR: mux-h1: Do h2 upgrade only on the first request
MINOR: spoe: Improve generation of the engine-id
MINOR: spoe: Support the async mode with several threads
MINOR: http: Add server name header from HTTP multiplexers
CLEANUP: http-ana: Remove the unused function http_send_name_header()
MINOR: stats: Add the support of float fields in stats
BUG/MINOR: contrib/prometheus-exporter: Return the time averages in
seconds
DOC: Fix documentation about the cli command to get resolver stats
BUG/MINOR: stats: Add a missing break in a switch statement
David Carlier (1):
BUILD/MINOR: auth: enabling for osx
Emeric Brun (1):
BUG/MAJOR: ssl: ssl_sock was not fully initialized.
Emmanuel Hocdet (12):
MINOR: ssl: use STACK_OF for chain certs
MINOR: ssl: add extra chain compatibility
MINOR: ssl: check private key consistency in loading
MINOR: ssl: do not look at DHparam with OPENSSL_NO_DH
CLEANUP: ssl: ssl_sock_load_crt_file_into_ckch
MINOR: ssl: clean ret variable in ssl_sock_load_ckchn
BUILD: ssl: BoringSSL add EVP_PKEY_base_id
BUG/MINOR: ssl: fix ressource leaks on error
BUG/MINOR: ssl: fix 0-RTT for BoringSSL
MINOR: ssl: ssl_fc_has_early should work for BoringSSL
MINOR: send-proxy-v2: sends authority TLV according to TLV received
BUG/MINOR: build: fix event ports (Solaris)
Frédéric Lécaille (2):
BUG/MEDIUM: stick-table: Wrong stick-table backends parsing.
BUG/MEDIUM: peers: local peer socket not bound.
Geoff Simmons (1):
MINOR: connection: add the fc_pp_authority fetch -- authority TLV, from
PROXYv2
Ilya Shipitsin (7):
BUILD: travis-ci: enable daily Coverity scan
BUILD: travis-ci: trigger non-mainstream configurations only on daily
builds.
BUILD: CI: add basic CentOS 6 cirrus build
BUILD: CI: skip reg-tests/connection/proxy_protocol_random_fail.vtc on
CentOS 6
BUILD: CI: temporarily disable ASAN
BUILD: CI: install golang-1.13 when building BoringSSL
BUILD: travis-ci: add PCRE2, SLZ build
Jerome Magnin (2):
BUG/MEDIUM: url32 does not take the path part into account in the
returned hash.
BUILD: connection: silence gcc warning with extra parentheses
Jérôme Magnin (3):
DOC: management: document reuse and connect counters in the CSV format
DOC: management: document cache_hits and cache_lookups in the CSV format
REGTESTS: checks: exclude freebsd target for tcp-check_multiple_ports.vtc
Kevin Zhu (1):
BUG/MEDIUM: spoe: Use a different engine-id per process
Krisztian Kovacs (1):
BUG/MEDIUM: namespace: close open namespaces during soft shutdown
Krisztián Kovács (kkovacs) (1):
BUG/MEDIUM: namespace: fix fd leak in master-worker mode
Luca Schimweg (1):
MINOR: sample: Add UUID-fetch
Lukas Tribus (2):
BUG/MINOR: lua: fix setting netfilter mark
MINOR: build: add linux-glibc-legacy build TARGET
Nenad Merdanovic (1):
MINOR: backend: Add srv_queue converter
Olivier Houchard (22):
BUG/MEDIUM: checks: Don't attempt to receive data if we already
subscribed.
BUG/CRITICAL: http_ana: Fix parsing of malformed cookies which start by a
delimiter
BUG/MEDIUM: streams: Don't switch the SI to SI_ST_DIS if we have data to
send.
MEDIUM: h1: Don't try to subscribe if we managed to read data.
MEDIUM: h1: Don't wake the H1 tasklet if we got the whole request.
MAJOR: fd: Get rid of the fd cache.
MEDIUM: pollers: Remember the state for read and write for each threads.
BUG/MEDIUM: proxy: Make sure to destroy the stream on upgrade from TCP to
H2
BUG/MEDIUM: fd: Always reset the polled_mask bits in fd_dodelete().
BUG/MEDIUM: pollers: Clear the poll_send bits as well.
BUG/MEDIUM: proxy: Don't forget the SF_HTX flag when upgrading
TCP=>H1+HTX.
BUG/MEDIUM: proxy: Don't use cs_destroy() when freeing the conn_stream.
BUG/MEDIUM: mux_pt: Don't call unsubscribe if we did not subscribe.
BUG/MEDIUM: h1: Always try to receive more in h1_rcv_buf().
MEDIUM: list: Separate "locked" list from regular list.
MINOR: mt_lists: Add new macroes.
MEDIUM: servers: Use LIST_DEL_INIT() instead of LIST_DEL().
MINOR: mt_lists: Do nothing in MT_LIST_ADD/MT_LIST_ADDQ if already in
list.
MINOR: mt_lists: Give MT_LIST_ADD, MT_LIST_ADDQ and MT_LIST_DEL a return
value.
MEDIUM: tasklets: Make the tasklet list a struct mt_list.
TESTS: Add a stress-test for mt_lists.
BUG/MEDIUM: tasklets: Make sure we're waking the target thread if it
sleeps.
Richard Russo (1):
BUG/MAJOR: http/sample: use a static buffer for raw -> htx conversion
Tim Duesterhus (5):
DOC: Add 'Question.md' issue template, discouraging asking questions
BUG/MINOR: lua: Properly initialize the buffer's fields for string
samples in hlua_lua2(smp|arg)
CLEANUP: lua: Get rid of obsolete (size_t *) cast in hlua_lua2(smp|arg)
BUG/MEDIUM: lua: Store stick tables into the sample's `t` field
CLEANUP: proxy: Remove `proxy_tbl_by_name`
William Lallemand (12):
MINOR: ssl: merge ssl_sock_load_cert_file() and
ssl_sock_load_cert_chain_file()
MEDIUM: ssl: use cert_key_and_chain struct in ssl_sock_load_cert_file()
MEDIUM: ssl: split the loading of the certificates
MEDIUM: ssl: lookup and store in a ckch_node tree
MEDIUM: ssl: load DH param in struct cert_key_and_chain
BUG/BUILD: ssl: fix build with openssl < 1.0.2
BUG/MEDIUM: ssl: does not try to free a DH in a ckch
BUG/MEDIUM: ssl: don't free the ckch in multi-cert bundle
BUG/MEDIUM: ssl: open the right path for multi-cert bundle
BUG/MINOR: mux-fcgi: silence a gcc warning about null dereference
BUILD: ssl: fix a warning when built with openssl < 1.0.2
DOC: replace utf-8 quotes by ascii ones
Willy Tarreau (184):
BUG/MINOR: dns: remove irrelevant dependency on a client connection
MINOR: applet: make appctx use their own pool
BUG/MEDIUM: http/htx: unbreak option http_proxy
BUG/MINOR: backend: do not try to install a mux when the connection failed
BUG/MINOR: checks: do not exit tcp-checks from the middle of the loop
MINOR: connection: add conn_get_src() and conn_get_dst()
MINOR: frontend: switch to conn_get_{src,dst}() for logging and debugging
MINOR: backend: switch to conn_get_{src,dst}() for port and address
mapping
MINOR: ssl: switch to conn_get_dst() to retrieve the destination address
MINOR: tcp: replace various calls to conn_get_{from,to}_addr with
conn_get_{src,dst}
MINOR: stream-int: use conn_get_{src,dst} in conn_si_send_proxy()
MINOR: stream/cli: use conn_get_{src,dst} in "show sess" and "show peers"
output
MINOR: log: use conn_get_{dst,src}() to retrieve the cli/frt/bck/srv/
addresses
MINOR: http/htx: use conn_get_dst() to retrieve the destination address
MINOR: lua: use conn_get_{src,dst} to retrieve connection addresses
MINOR: http: check the source address via conn_get_src() in sample fetch
functions
CLEANUP: connection: remove the now unused conn_get_{from,to}_addr()
MINOR: connection: add new src and dst fields
MINOR: connection: use conn->{src,dst} instead of &conn->addr.{from,to}
MINOR: ssl-sock: use conn->dst instead of &conn->addr.to
MINOR: lua: switch to conn->dst for a connection's target address
MINOR: peers: use conn->dst for the peer's target address
MINOR: htx: switch from conn->addr.{from,to} to conn->{src,dst}
MINOR: stream: switch from conn->addr.{from,to} to conn->{src,dst}
MINOR: proxy: switch to conn->src in error snapshots
MINOR: session: use conn->src instead of conn->addr.from
MINOR: tcp: replace conn->addr.{from,to} with conn->{src,dst}
MINOR: unix: use conn->dst for the target address in ->connect()
MINOR: sockpair: use conn->dst for the target address in ->connect()
MINOR: log: use conn->{src,dst} instead of conn->addr.{from,to}
MINOR: checks: replace conn->addr.to with conn->dst
MINOR: frontend: switch from conn->addr.{from,to} to conn->{src,dst}
MINOR: http: convert conn->addr.from to conn->src in sample fetches
MEDIUM: backend: turn all conn->addr.{from,to} to conn->{src,dst}
MINOR: connection: create a new pool for struct sockaddr_storage
MEDIUM: connection: make sure all address producers allocate their address
MAJOR: connection: remove the addr field
MINOR: connection: don't use clear_addr() anymore, just release the
address
MINOR: stream: add a new target_addr entry in the stream structure
MAJOR: stream: store the target address into s->target_addr
MINOR: peers: now remove the remote connection setup code
MEDIUM: lua: do not allocate the remote connection anymore
MEDIUM: backend: always release any existing prior connection in
connect_server()
MEDIUM: backend: remove impossible cases from connect_server()
BUG/MEDIUM: tcp-checks: do not dereference inexisting conn_stream
BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff
BUG/MINOR: proxy: always lock stop_proxy()
BUILD: threads: add the definition of PROTO_LOCK
BUG/MINOR: log: make sure writev() is not interrupted on a file output
DOC: improve the wording in CONTRIBUTING about how to document a bug fix
BUG/MAJOR: queue/threads: avoid an AB/BA locking issue in
process_srv_queue()
MEDIUM: mux-h2: don't try to read more than needed
BUG/MINOR: debug: fix a small race in the thread dumping code
MINOR: wdt: also consider that waiting in the thread dumper is normal
REGTESTS: checks: make 4be_1srv_health_checks more reliable
BUG/MINOR: stream-int: make sure to always release empty buffers after
sending
BUG/MINOR: stream-int: also update analysers timeouts on activity
BUG/MEDIUM: mux-h2: unbreak receipt of large DATA frames
BUG/MEDIUM: mux-h2: split the stream's and connection's window sizes
BUG/MINOR: mux-h2: don't refrain from sending an RST_STREAM after another
one
BUG/MINOR: mux-h2: use CANCEL, not STREAM_CLOSED in h2c_frt_handle_data()
BUG/MINOR: mux-h2: do not send REFUSED_STREAM on aborted uploads
BUG/MEDIUM: mux-h2: do not recheck a frame type after a state transition
BUG/MINOR: mux-h2: always send stream window update before connection's
BUG/MINOR: mux-h2: always reset rcvd_s when switching to a new frame
BUG/MEDIUM: checks: make sure to close nicely when we're the last to speak
CLEANUP: mux-h2: move the demuxed frame check code in its own function
BUG/MINOR: pools: don't mark the thread harmless if already isolated
BUG/MINOR: buffers/threads: always clear a buffer's head before releasing
it
CLEANUP: buffer: replace b_drop() with b_free()
CLEANUP: task: move the cpu_time field to the task-only part
MINOR: cli: add two new states to print messages on the CLI
MINOR: cli: add cli_msg(), cli_err(), cli_dynmsg(), cli_dynerr()
CLEANUP: cli: replace all occurrences of manual handling of return
messages
MINOR: fd: make sure to mark the thread as not stuck in fd_update_events()
MINOR: debug: indicate the applet name when the task is task_run_applet()
MINOR: tools: add append_prefixed_str()
MINOR: lua: export applet and task handlers
MEDIUM: debug: make the thread dump code show Lua backtraces
MINOR: list: add LIST_SPLICE() to merge one list into another
MINOR: tools: add a DEFNULL() macro to use NULL for empty args
REORG: trace: rename trace.c to calltrace.c and mention it's not
thread-safe
MINOR: sink: create definitions a minimal code for event sinks
MINOR: sink: add a support for file descriptors
MINOR: trace: start to create a new trace subsystem
MINOR: trace: add allocation of buffer-sized trace buffers
MINOR: trace/cli: register the "trace" CLI keyword to list the sources
MINOR: trace/cli: parse the "level" argument to configure the trace
verbosity
MINOR: trace/cli: add "show trace" to report trace state and statistics
MINOR: trace: implement a very basic trace() function
MINOR: trace: add the file name and line number in the prefix
MINOR: trace: make trace() now also take a level in argument
MINOR: trace: implement a call to a decode function
MINOR: trace: add per-level macros to produce traces
MINOR: trace: add a definition of typed arguments to trace()
MINOR: trace: make sure to always stop the locking when stopping or
pausing
MINOR: trace: add the possibility to lock on some arguments
MINOR: trace: parse the "lock" argument to trace
MINOR: trace: retrieve useful pointers and enforce lock-on
DOC: management: document the "trace" and "show trace" commands
BUILD: trace: make the lockon_ptr const to silence a warning without
threads
BUG/MEDIUM: mux-h1: do not truncate trailing 0CRLF on buffer boundary
BUG/MEDIUM: mux-h1: do not report errors on transfers ending on buffer
full
BUG/MINOR: mworker: disable SIGPROF on re-exec
BUG/MEDIUM: listener/threads: fix an AB/BA locking issue in
delete_listener()
MINOR: sink: set the fd-type sinks to non-blocking
MINOR: tools: add a function varint_bytes() to report the size of a varint
MINOR: buffer: add functions to read/write varints from/to buffers
MINOR: fd: add fd_write_frag_line() to send a fragmented line to an fd
MINOR: sink: now call the generic fd write function
MINOR: ring: add a new mechanism for retrieving/storing ring data in
buffers
MINOR: ring: add a ring_write() function
MINOR: ring: add a generic CLI io_handler to dump a ring buffer
MINOR: sink: add support for ring buffers
MINOR: sink: implement "show events" to show supported sinks and dump the
rings
MINOR: sink: now report the number of dropped events on output
MINOR: trace: support a default callback for the source
MINOR: trace: extend the source location to 13 chars
MINOR: trace: show thread number and source name in the trace
MINOR: trace: change the TRACE() calling convention to put the args and
cb last
MINOR: tools: add a generic struct "name_desc" for name-description pairs
MINOR: trace: replace struct trace_lockon_args with struct name_desc
MINOR: trace: change the "payload" level to "data" and move it
MINOR: trace: prepend the function name for developer level traces
MINOR: trace: also report the trace level in the output
MINOR: trace: change the detail_level to per-source verbosity
MINOR: mux-h2/trace: register a new trace source with its events
MINOR: mux-h2/trace: add the default decoding callback
MEDIUM: mux-h2/trace: add lots of traces all over the code
MINOR: mux-h2: add functions to convert an h2c/h2s state to a string
MINOR: mux-h2/trace: add a new verbosity level "clean"
MINOR: mux-h2/trace: only decode the start-line at verbosity other than
"minimal"
MINOR: mux-h2/trace: always report the h2c/h2s state and flags
MINOR: mux-h2/trace: report h2s->id before h2c->dsi for the stream ID
CLEANUP: mux-h2/trace: reformat the "received" messages for better
alignment
CLEANUP: mux-h2/trace: lower-case event names
MINOR: trace: extend default event names to 12 chars
BUG/MINOR: ring: fix the way watchers are counted
MINOR: cli: extend the CLI context with a list and two offsets
MINOR: mux-h2/trace: report the connection pointer and state before
FRAME_H
MEDIUM: ring: implement a wait mode for watchers
BUG/MEDIUM: mux-h2/trace: do not dereference h2c->conn after failed idle
BUG/MEDIUM: mux-h2/trace: fix missing braces added with traces
BUG/MINOR: ring: b_peek_varint() returns a uint64_t, not a size_t
CLEANUP: fd: remove leftovers of the fdcache
MINOR: fd: add a new "initialized" bit in the fdtab struct
MINOR: fd/log/sink: make the non-blocking initialization depend on the
initialized bit
MEDIUM: log: use the new generic fd_write_frag_line() function
MINOR: log: add a target type instead of hacking the address family
MEDIUM: log: add support for logging to a ring buffer
MEDIUM: fd: remove the FD_EV_POLLED status bit
MEDIUM: fd: simplify the fd_*_{recv,send} functions using BTS/BTR
MINOR: fd: make updt_fd_polling() a normal function
CONTRIB: debug: add new program "poll" to test poll() events
BUG/MINOR: checks: stop polling for write when we have nothing left to
send
BUG/MINOR: checks: start sending the request right after connect()
BUG/MINOR: checks: make __event_chk_srv_r() report success before closing
BUG/MINOR: checks: do not uselessly poll for reads before the connection
is up
BUG/MINOR: lb/leastconn: ignore the server weights for empty servers
MEDIUM: fd: mark the FD as ready when it's inserted
MINOR: fd: add two new calls fd_cond_{recv,send}()
MEDIUM: connection: enable reading only once the connection is confirmed
MINOR: fd: add two flags ERR and SHUT to describe FD states
MEDIUM: fd: do not use the FD_POLL_* flags in the pollers anymore
BUG/MEDIUM: connection: don't keep more idle connections than ever needed
MINOR: stats: report the number of idle connections for each server
BUG/MEDIUM: check/threads: make external checks run exclusively on thread
1
OPTIM: listeners: use tasklets for the multi-queue rings
BUILD: makefile: work around yet another GCC fantasy (-Wstring-plus-int)
BUG/MEDIUM: checks: make sure the connection is ready before trying to
recv
CLEANUP: task: remove impossible test
CLEANUP: task: cache the task_per_thread pointer
MINOR: task: split the tasklet vs task code in process_runnable_tasks()
MINOR: task: introduce a thread-local "sched" variable for local
scheduler stuff
MINOR: h2/trace: indicate 'F' or 'B' to locate the side of an h2c in
traces
MINOR: h2/trace: report the frame type when known
BUG/MINOR: mux-h2: do not wake up blocked streams before the mux is ready
MINOR: time: add timeofday_as_iso_us() to return instant time as ISO
MINOR: sink: finally implement support for SINK_FMT_{TIMED,ISO}
MINOR: sink: change ring buffer "buf0"'s format to "timed"
BUG/MEDIUM: mux-h2: don't reject valid frames on closed streams
BUG/MEDIUM: fcgi: fix missing list tail in sample fetch registration
BUG/MEDIUM: fd: HUP is an error only when write is active
Revert "MINOR: cache: allow caching of OPTIONS request"
[email protected] (1):
DOC: fixed typo in management.txt
---