Summary
2020/05/28 : 1.9r1 (1.0.0-215.948)
2020/04/02 : 1.9r1 (1.0.0-214.948)
- BUG/CRITICAL: hpack: never index a header into the headroom after wrapping
- BUG/MINOR: http-ana: Reset request analysers on error when waiting for response
- BUG/MINOR: filters: Forward everything if no data filters are called
- BUG/MINOR: filters: Use filter offset to decude the amount of forwarded data
- MINOR: http-rules: Handle the rule direction when a redirect is evaluated
- BUG/MINOR: http_ana: make sure redirect flags don't have overlapping bits
- MINOR: http-rules: Add a flag on redirect rules to know the rule direction
- BUG/MEDIUM: http: unbreak redirects in legacy mode
- DOC: internals: Fix spelling errors in filters.txt
- BUG/MINOR: stats: Fix color of draining servers on stats page
- BUG/MINOR: peers: avoid an infinite loop with peers_fe is NULL
- BUG/MINOR: peers: init bind_proc to 1 if it wasn't initialized
- REGTEST: increase timeouts on the seamless-reload test
- REGTESTS: use "command -v" instead of "which"
- BUG/MINOR: connections: Make sure we free the connection on failure.
- DOC: assorted typo fixes in the documentation
- DOC: proxy_protocol: Reserve TLV type 0x05 as PP2_TYPE_UNIQUE_ID
- BUG/MINOR: haproxy: always initialize sleeping_thread_mask
- DOC: ssl: clarify security implications of TLS tickets
- DOC: improve description of no-tls-tickets
- DOC: fix typo about no-tls-tickets
- BUG/MINOR: rules: Increment be_counters if backend is assigned for a silent-drop
- BUG/MINOR: rules: Preserve FLT_END analyzers on silent-drop action
- BUG/MINOR: http-rules: Fix a typo in the reject action function
- BUG/MINOR: http-rules: Preserve FLT_END analyzers on reject action
- BUG/MINOR: lua: Ignore the reserve to know if a channel is full or not
- BUG/MINOR: http-ana: Reset request analysers on a response side error
- REGTEST: make the PROXY TLV validation depend on version 2.2
- BUG/MAJOR: proxy_protocol: Properly validate TLV lengths
- DOC: fix incorrect indentation of http_auth_*
- BUG/MAJOR: list: fix invalid element address calculation
- BUG/MINOR: dns: ignore trailing dot
- BUG/MINOR: sample: Make sure to return stable IDs in the unique-id fetch
- BUG/MINOR: connection: make sure to correctly tag local PROXY connections
- BUG/MEDIUM: ssl: fix several bad pointer aliases in a few sample fetch functions
- BUG/MINOR: sample: fix the json converter's endian-sensitivity
- BUILD: ebtree: improve architecture-specific alignment
- MINOR: compiler: add new alignment macros
- BUILD: fix recent build failure on unaligned archs
- BUG/MEDIUM: ebtree: don't set attribute packed without unaligned access support
- MINOR: compiler: move CPU capabilities definition from config.h and complete them
- BUG/MEDIUM: shctx: make sure to keep all blocks aligned
- CONTRIB: debug: also support reading values from stdin
- CONTRIB: debug: support reporting multiple values at once
- CONTRIB: debug: add the possibility to decode the value as certain types only
- BUILD: cfgparse: silence a bogus gcc warning on 32-bit machines
- BUG/MAJOR: http-ana: Always abort the request when a tarpit is triggered
- BUG/MINOR: http-ana: Matching on monitor-uri should be case-sensitive
- BUG/MINOR: filters: Count HTTP headers as filtered data but don't forward them
- MINOR: filters: Forward data only if the last filter forwards something
- MINOR: http-htx: Add a function to retrieve the headers size of an HTX message
- SCRIPTS: announce-release: use mutt -H instead of -i to include the draft
- BUG/MINOR: namespace: avoid closing fd when socket failed in my_socketat
- BUILD: ssl: improve SSL_CTX_set_ecdh_auto compatibility
- SCRIPTS: make announce-release executable again
- BUG/MINOR: tcp: don't try to set defaultmss when value is negative
- DOC: word converter ignores delimiters at the start or end of input string
- BUG/MINOR: tcp: avoid closing fd when socket failed in tcp_bind_listener
- BUG/MINOR: listener: enforce all_threads_mask on bind_thread on init
- BUG/MEDIUM: listener: only consider running threads when resuming listeners
- BUG/MINOR: dns: allow 63 char in hostname
- BUG/MINOR: unix: better catch situations where the unix socket path length is close to the limit
- SCRIPTS: announce-release: allow the user to force to overwrite old files
- SCRIPTS: announce-release: place the send command in the mail's header
- MINOR: acl: Warn when an ACL is named 'or'
- BUG/MINOR: ssl: we may only ignore the first 64 errors
- BUG/MAJOR: memory: Don't forget to unlock the rwlock if the pool is empty.
- BUG/MEDIUM: memory: Add a rwlock before freeing memory.
- MINOR: memory: Only init the pool spinlock once.
- BUG/MEDIUM: memory_pool: Update the seq number in pool_flush().
- BUG/MINOR: connection: fix ip6 dst_port copy in make_proxy_line_v2
- BUG/MEDIUM: pipe: fix a use-after-free in case of pipe creation error
2020/01/27 : 1.9r1 (1.0.0-208.876)
- BUG/MINOR: dns: allow srv record weight set to 0
- BUG/MINOR: http-ana/filters: Wait end of the http_end callback for all filters
- BUG/MEDIUM: mux-h2: make sure we don't emit TE headers with anything but "trailers"
- BUG/MEDIUM: 0rtt: Only consider the SSL handshake.
- BUG/MINOR: http_act: don't check capture id in backend
- MINOR: proxy/http-ana: Add support of extra attributes for the cookie directive
- BUG/MINOR: tcp-rules: Fix memory releases on error path during action parsing
- BUG/MINOR: stick-table: Use MAX_SESS_STKCTR as the max track ID during parsing
- BUG/MINOR: http-rules: Remove buggy deinit functions for HTTP rules
- BUG/MINOR: 51d: Fix bug when HTX is enabled
- BUG/MINOR: dns: Make dns_query_id_seed unsigned
- BUG/MINOR: cache: Fix leak of cache name in error path
- BUG/MINOR: pattern: handle errors from fgets when trying to load patterns
- BUG/MINOR: stream: don't mistake match rules for store-request rules
- BUG/MEDIUM: cli: _getsocks must send the peers sockets
- REGTEST: add sample_fetches/hashes.vtc to validate hashes
- BUG/MAJOR: hashes: fix the signedness of the hash inputs
- BUG/MEDIUM: mux_h1: Don't call h1_send if we subscribed().
- BUG/MEDIUM: mworker: remain in mworker mode during reload
- BUG/MEDIUM: mux-h2: fix missing test on sending_list in previous patch
- BUG/MINOR: mux-h2: use a safe list_for_each_entry in h2_send()
- BUG/MEDIUM: session: do not report a failure when rejecting a session
- BUG/MINOR: channel: inject output data at the end of output
- BUG/MEDIUM: http-ana: Truncate the response when a redirect rule is applied
- BUG/MINOR: proxy: Fix input data copy when an error is captured
- BUG/MINOR: h1: Report the right error position when a header value is invalid
- BUG/MINOR: checks: refine which errno values are really errors.
- BUG/MINOR: ssl: openssl-compat: 1.9 uses OPENSSL_VERSION, not HA_OPENSSL_VERSION
- BUG/MINOR: ssl: openssl-compat: Fix getm_ defines
- BUG/MEDIUM: fd/threads: fix a concurrency issue between add and rm on the same fd
- MINOR: fd/threads: make _GET_NEXT()/_GET_PREV() use the volatile attribute
2019/12/20 : 1.9r1 (1.0.0-206.845)
- BUG/MAJOR: task: add a new TASK_SHARED_WQ flag to fix foreing requeuing
- MINOR: task: only check TASK_WOKEN_ANY to decide to requeue a task
- BUG/MEDIUM: ssl: Don't set the max early data we can receive too early.
- BUG/MINOR: sample: always check converters' arguments
- BUG/MINOR: sample: fix the closing bracket and LF in the debug converter
2019/12/11 : 1.9r1 (1.0.0-206.840)
- BUILD/MINOR: unix sockets: silence an absurd gcc warning about strncpy()
- BUG/MINOR: listener: fix off-by-one in state name check
- BUG/MINOR: server: make "agent-addr" work on default-server line
- BUG/MINOR: listener: do not immediately resume on transient error
- BUG/MINOR: mworker: properly pass SIGTTOU/SIGTTIN to workers
- BUG/MINOR: log: fix minor resource leaks on logformat error path
- DOC: remove references to the outdated architecture.txt
- BUILD: do not disable -Wformat-truncation anymore
- BUILD/MINOR: tools: shut up the format truncation warning in get_gmt_offset()
- BUILD/MINOR: ssl: shut up a build warning about format truncation
- BUG/MINOR: tasks: only requeue a task if it was already in the queue
- DOC: listeners: add a few missing transitions
- BUG/MEDIUM: kqueue: Make sure we report read events even when no data.
- BUG/MEDIUM: proto_udp/threads: recv() and send() must not be exclusive.
- BUG/MAJOR: dns: add minimalist error processing on the Rx path
- DOC: document the listener state transitions
- BUG/MEDIUM: listener/threads: fix a remaining race in the listener's accept()
- BUG/MINOR: listener: also clear the error flag on a paused listener
- BUG/MINOR: listener/threads: always use atomic ops to clear the FD events
- BUG/MINOR: proxy: make soft_stop() also close FDs in LI_PAUSED state
2019/12/06 : 1.9r1 (1.0.0-206.820)
- BUG/MEDIUM: checks: Make sure we set the task affinity just before connecting.
- BUG/MEDIUM: tasks: Make sure we switch wait queues in task_set_affinity().
- BUG/MINOR: mux-h1: Fix conditions to know whether or not we may receive data
- BUG/MINOR: mux-h1: Don't rely on CO_FL_SOCK_RD_SH to set H1C_F_CS_SHUTDOWN
- BUG/MEDIUM: mux-h1: Never reuse H1 connection if a shutw is pending
- BUG/MINOR: ssl: certificate choice can be unexpected with openssl >= 1.1.1
- BUG/MEDIUM: listener/thread: fix a race when pausing a listener
- BUG/MEDIUM: stream-int: don't subscribed for recv when we're trying to flush data
- DOC: move the "group" keyword at the right place
- DOC: clarify matching strings on binary fetches
- DOC: Clarify behavior of server maxconn in HTTP mode
- BUG/MEDIUM: stream: address a very rare unhandled connection issue
- BUG/MINOR: http-htx: Don't make http_find_header() fail if the value is empty
2019/11/27 : 1.9r1 (1.0.0-206.807)
- BUG/MINOR: contrib/prometheus-exporter: decode parameter and value only
- BUG/MINOR: contrib/prometheus-exporter: Use HTX errors and not legacy ones
- MINOR: stats: Report max times in addition of the averages for sessions
- MINOR: contrib/prometheus-exporter: Add a param to ignore servers in maintenance
- MINOR: contrib/prometheus-exporter: filter exported metrics by scope
- MINOR: contrib/prometheus-exporter: report the number of idle conns per server
- BUG/MINOR: contrib/prometheus-exporter: Rename some metrics
- MINOR: contrib/prometheus-exporter: Report metrics about max times for sessions
- MINOR: counters: Add fields to store the max observed for {q,c,d,t}_time
- MINOR: stream: Remove the lock on the proxy to update time stats
- MINOR: freq_ctr: Make the sliding window sums thread-safe
- DOC: fix typo in Prometheus exporter doc
- BUG/MINOR: stats: Add a missing break in a switch statement
- BUG/MINOR: stream: init variables when the list is empty
- SCRIPTS: git-show-backports: add "-s" to proposed cherry-pick commands
- SCRIPTS: create-release: show the correct origin name in suggested commands
- BUG/MAJOR: mux-h2: don't try to decode a response HEADERS frame in idle state
- BUG/MAJOR: h2: make header field name filtering stronger
- BUG/MAJOR: h2: reject header values containing invalid chars
- MINOR: ist: add ist_find_ctl()
- DOC: Add documentation about the use-service action
- BUG/MINOR: cli: fix out of bounds in -S parser
- BUG/MINOR: stream-int: Fix si_cs_recv() return value
- BUG/MINOR: mux-h1: Fix tunnel mode detection on the response path
- BUG/MEDIUM: stream-int: Don't loose events on the CS when an EOS is reported
- BUILD/MINOR: ssl: fix compiler warning about useless statement
- BUG/MINOR: ssl: fix crt-list neg filter for openssl < 1.1.1
- BUG/MINOR: mux-h1: Don't set CS_FL_EOS on a read0 when receiving data to pipe
- BUG/MEDIUM: filters: Don't call TCP callbacks for HTX streams
2019/11/15 : 1.9r1 (1.0.0-206.778)
- BUG/MINOR: log: limit the size of the startup-logs
- BUG/MEDIUM: listeners: always pause a listener on out-of-resource condition
- BUG/MEDIUM: Make sure we leave the session list in session_free().
2019/11/14 : 1.9r1 (1.0.0-206.775)
- BUG/MINOR: queue/threads: make the queue unlinking atomic
- DOC: management: fix typo on "cache_lookups" stats output
- DOC: management: document cache_hits and cache_lookups in the CSV format
- DOC: management: document reuse and connect counters in the CSV format
- BUG: dns: timeout resolve not applied for valid resolutions
- BUG/MEDIUM: stream: Be sure to release allocated captures for TCP streams
- MINOR: doc: http-reuse connection pool fix
- BUG/MEDIUM: stream: Be sure to support splicing at the mux level to enable it
- BUG/MEDIUM: mux-h1: Disable splicing for chunked messages
- BUG/MEDIUM: mux-h2: immediately report connection errors on streams
- BUG/MEDIUM: mux-h2: immediately remove a failed connection from the idle list
- BUG/MEDIUM: mux-h2: report no available stream on a connection having errors
- BUG/MINOR: config: Update cookie domain warn to RFC6265
- BUG/MEDIUM: servers: Only set SF_SRV_REUSED if the connection if fully ready.
- MINOR: mux: Add a new method to get informations about a mux.
- BUG/MINOR: spoe: fix off-by-one length in UUID format string
- BUG/MAJOR: stream-int: Don't receive data from mux until SI_ST_EST is reached
- BUG/MINOR: cli: don't call the kw->io_release if kw->parse failed
- MINOR: tcp: avoid confusion in time parsing init
- BUG/MINOR: mux-h2: do not emit logs on backend connections
- MINOR: config: warn on presence of "\n" in header values/replacements
2019/10/23 : 1.9r1 (1.0.0-205.754)
- BUG/MEDIUM: pattern: make the pattern LRU cache thread-local and lockless
- BUG/MINOR: stick-table: fix an incorrect 32 to 64 bit key conversion
2019/10/22 : 1.9r1 (1.0.0-205.752)
- BUG/MINOR: ssl: fix memcpy overlap without consequences.
- BUG/MINOR: mux-h2: also make sure blocked legacy connections may expire
- BUG/MAJOR: mux-h2: fix incorrect backport of connection timeout fix
- BUG/MINOR: sample: Make the `field` converter compatible with `-m found`
- BUG/MINOR: cache: alloc shctx after check config
- BUG/MINOR: stick-table: Never exceed (MAX_SESS_STKCTR-1) when fetching a stkctr
- BUG/MINOR: ssl: Fix fd leak on error path when a TLS ticket keys file is parsed
- BUG/MINOR: mworker/cli: reload fail with inherited FD
- MINOR: sample: Add UUID-fetch
- BUG/MEDIUM: ssl: 'tune.ssl.default-dh-param' value ignored with openssl > 1.1.1
- CLEANUP: bind: handle warning label on bind keywords parsing.
- CLEANUP: ssl: make ssl_sock_load_dh_params handle errcode/warn
- CLEANUP: ssl: make ssl_sock_put_ckch_into_ctx handle errcode/warn
- CLEANUP: ssl: make ssl_sock_load_cert*() return real error codes
- BUG/MEDIUM: mux_pt: Only call the wake emthod if nobody subscribed to receive.
- BUG/MEDIUM: mux_pt: Don't destroy the connection if we have a stream attached.
- Revert e8826ded5fea3593d89da2be5c2d81c522070995.
- BUG/MAJOR: idle conns: schedule the cleanup task on the correct threads
- MINOR: version: make the version strings variables, not constants
- BUG/MEDIUM: mux_pt: Make sure we don't have a conn_stream before freeing.
- BUG/MINOR: tcp: Don't alter counters returned by tcp info fetchers
- BUG/MINOR: mworker/ssl: close openssl FDs unconditionally
- BUG/MINOR: http-htx: Properly set htx flags on error files to support keep-alive
- BUG/MINOR: WURFL: fix send_log() function arguments
- BUG/MINOR: mux-h1: Capture ignored parsing errors
- BUG/MINOR: mux-h1: Mark the output buffer as full when the xfer is interrupted
- BUG/MINOR: chunk: Fix tests on the chunk size in functions copying data
- BUG/MEDIUM: htx: Catch chunk_memcat() failures when HTX data are formatted to h1
- BUILD: ssl: wrong #ifdef for SSL engines code
- BUG/MINOR: ssl: abort on sni_keytypes allocation failure
- BUG/MINOR: ssl: free the sni_keytype nodes
- BUG/MINOR: ssl: abort on sni allocation failure
2019/10/11 : 1.9r1 (1.0.0-205.720)
- MINOR: stats: mention in the help message support for "json" and "typed"
- DOC: clarify some points around http-send-name-header's behavior
- BUG/MEDIUM: cache: make sure not to cache requests with absolute-uri
- BUG/MEDIUM: mux-h2: do not enforce timeout on long connections
- BUILD: ebtree: make eb_is_empty() and eb_is_dup() take a const
- MINOR: mux-h2: add a per-connection list of blocked streams
- BUG/MINOR: lua: Properly initialize the buffer's fields for string samples in hlua_lua2(smp|arg)
2019/10/10 : 1.9r1 (1.0.0-205.713)
- MINOR: muxes: Don't bother to LIST_DEL(&conn->list) before calling conn_free().
2019/10/04 : 1.9r1 (1.0.0-205.712)
2019/09/27 : 1.9r1 (1.0.0-203.712)
- BUG/MINOR: contrib/prometheus-exporter: Return the time averages in seconds
- MINOR: stats: Add the support of float fields in stats
- BUG/MEDIUM: namespace: fix fd leak in master-worker mode
- DOC: Fix documentation about the cli command to get resolver stats
- MINOR: spoe: Support the async mode with several threads
- MINOR: spoe: Improve generation of the engine-id
- BUG/MEDIUM: spoe: Use a different engine-id per process
- BUG/MAJOR: mux_h2: Don't consume more payload than received for skipped frames
- BUG/MINOR: mux-h2: Use the dummy error when decoding headers for a closed stream
- BUG/MEDIUM: mux-h2: don't reject valid frames on closed streams
- BUG/MEDIUM: namespace: close open namespaces during soft shutdown
- BUG/MINOR: mux-h2: do not wake up blocked streams before the mux is ready
- BUG/MEDIUM: check/threads: make external checks run exclusively on thread 1
- BUG/MAJOR: mux-h2: Handle HEADERS frames received after a RST_STREAM frame
- BUG/MINOR: Missing stat_field_names (since f21d17bb)
- BUG/MINOR: acl: Fix memory leaks when an ACL expression is parsed
- BUG/MINOR: filters: Properly set the HTTP status code on analysis error
- BUG/MEDIUM: http: also reject messages where "chunked" is missing from transfer-enoding
- MEDIUM: WURFL: HTX awareness.
- MINOR: WURFL: removes heading wurfl-information-separator from wurfl-get-all() and wurfl-get() results
2019/09/24 : 1.9r1 (1.0.0-203.692)
- BUG/MEDIUM: servers: Fix a race condition with idle connections.
- MINOR: sample: Add sha2([<bits>]) converter
- BUILD: hapee/modules: select either md5 or md5sum
- MINOR: hapee/WURFL: added live update database function
- MINOR: hapee/WURFL: added custom API log function
- MINOR: hapee/WURFL: added function to check correct module initialization
- BUG/MINOR: hapee/WURFL: corrected version check of used wurfl library
2019/09/10 : 1.9r1 (1.0.0-203.685)
- MINOR: contrib/prometheus-exporter: Report DRAIN/MAINT/NOLB status for servers
- MEDIUM: checks: Make sure we unsubscribe before calling cs_destroy().
- BUG/MINOR: listener: Fix a possible null pointer dereference
- MINOR: stats: report the number of idle connections for each server
- BUG/MEDIUM: connection: don't keep more idle connections than ever needed
- BUG/MINOR: lb/leastconn: ignore the server weights for empty servers
- BUG/MEDIUM: cache: Don't cache objects if the size of headers is too big
- BUG/MINOR: h1: Properly reset h1m when parsing is restarted
- BUG/MINOR: http-ana: Reset response flags when 1xx messages are handled
- BUG/MEDIUM: proto-http: Always start the parsing if there is no outgoing data
- BUG/MEDIUM: url32 does not take the path part into account in the returned hash.
2019/08/26 : 1.9r1 (1.0.0-202.674)
- BUG/MEDIUM: listener/threads: fix an AB/BA locking issue in delete_listener()
- BUG/MINOR: mworker: disable SIGPROF on re-exec
- DOC: fixed typo in management.txt
- BUG/MEDIUM: mux-h1: do not truncate trailing 0CRLF on buffer boundary
2019/08/21 : 1.9r1 (1.0.0-202.670)
- BUG/MINOR: Fix prometheus '# TYPE' and '# HELP' headers
- BUG/MINOR: contrib/prometheus-exporter: Don't use channel_htx_recv_max()
- MINOR: contrib/prometheus-exporter: Follow best practices about metrics type
- MINOR: contrib/prometheus-exporter: Rename some metrics to be more usable
- MINOR: contrib/prometheus-exporter: Remove usless rate metrics
- BUG/MINOR: contrib/prometheus-exporter: Fix a typo in the run-queue metric type
2019/08/16 : 1.9r1 (1.0.0-202.664)
- BUG/MEDIUM: lua: Fix test on the direction to set the channel exp timeout
- BUG/MINOR: lua: fix setting netfilter mark
- BUG/MINOR: buffers/threads: always clear a buffer's head before releasing it
- MINOR: ssl: ssl_fc_has_early should work for BoringSSL
- BUG/MINOR: ssl: fix 0-RTT for BoringSSL
2019/08/06 : 1.9r1 (1.0.0-202.659)
- BUG/MEDIUM: checks: make sure to close nicely when we're the last to speak
- BUG/MINOR: mux-h2: always reset rcvd_s when switching to a new frame
- BUG/MINOR: mux-h2: always send stream window update before connection's
- BUG/MEDIUM: mux-h2: do not recheck a frame type after a state transition
- BUG/MINOR: mux-h2: use CANCEL, not STREAM_CLOSED in h2c_frt_handle_data()
- BUG/MINOR: mux-h2: don't refrain from sending an RST_STREAM after another one
- BUG/MEDIUM: fd: Always reset the polled_mask bits in fd_dodelete().
2019/08/02 : 1.9r1 (1.0.0-202.652)
- BUG/MEDIUM: mux-h2: split the stream's and connection's window sizes
- BUG/MEDIUM: mux-h2: unbreak receipt of large DATA frames
2019/08/01 : 1.9r1 (1.0.0-202.650)
- BUG/MINOR: stream-int: also update analysers timeouts on activity
- BUG/MAJOR: http/sample: use a static buffer for raw -> htx conversion
- BUG/MEDIUM: lb-chash: Ensure the tree integrity when server weight is increased
2019/07/30 : 1.9r1 (1.0.0-202.647)
- BUG/MAJOR: queue/threads: avoid an AB/BA locking issue in process_srv_queue()
- BUG/MINOR: hlua: Only execute functions of HTTP class if the txn is HTTP ready
- MINOR: hlua: Add a flag on the lua txn to know in which context it can be used
- MINOR: hlua: Don't set request analyzers on response channel for lua actions
- BUG/MEDIUM: hlua: Check the calling direction in lua functions of the HTTP class
- BUG/MINOR: lua: Set right direction and flags on new HTTP objects
- BUG/MINOR: hlua/htx: Reset channels analyzers when txn:done() is called
- DOC: improve the wording in CONTRIBUTING about how to document a bug fix
- BUG/MINOR: log: make sure writev() is not interrupted on a file output
- BUILD: log/threads: implement the logsrv lock
- BUG/MEDIUM: streams: Don't switch the SI to SI_ST_DIS if we have data to send.
- BUG/MEDIUM: lb-chash: Fix the realloc() when the number of nodes is increased
- BUILD: threads: add the definition of PROTO_LOCK
- BUG/MINOR: proxy: always lock stop_proxy()
- BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff
2019/07/23 : 1.9r1 (1.0.0-202.632)
- BUG/CRITICAL: http_ana: Fix parsing of malformed cookies which start by a delimiter
- BUG/MINOR: http_htx: Support empty errorfiles
- BUG/MINOR: http_ana: Be sure to have an allocated buffer to generate an error
- BUG/MEDIUM: tcp-checks: do not dereference inexisting conn_stream
- BUG/MINOR: mux-h1: Close server connection if input data remains in h1_detach()
- BUG/MEDIUM: mux-h1: Trim excess server data at the end of a transaction
- BUG/MINOR: checks: do not exit tcp-checks from the middle of the loop
- BUG/MINOR: session: Send a default HTTP error if accept fails for a H1 socket
- BUG/MINOR: session: Emit an HTTP error if accept fails only for H1 connection
- BUG/MINOR: hlua: Make the function txn:done() HTX aware
- BUG/MINOR: cache/htx: Make maxage calculation HTX aware
- BUG/MINOR: http_fetch: Fix http_auth/http_auth_group when called from TCP rules
- BUG/MINOR: backend: do not try to install a mux when the connection failed
- BUG/MEDIUM: http/htx: unbreak option http_proxy
- BUG/MEDIUM: checks: Don't attempt to receive data if we already subscribed.
2019/07/19 : 1.9r1 (1.0.0-202.617)
- BUILD: hapee/da: repaired build in case of using old DeviceAtlas library
- MINOR: hapee/da: add function that allow data reload
- MINOR: hapee/da: add spin locking
- MINOR: hapee/da: add support for loading a precompiled json data
- MINOR: hapee/51d: add function that allow data reload
- BUG/MINOR: hapee/51d: add spin locking
2019/07/15 : 1.9r1 (1.0.0-202.611)
- BUG/MEDIUM: tcp-check: unbreak multiple connect rules again
- BUG/MINOR: mux-pt: do not pretend there's more data after a read0
- BUG/MINOR: mux-h1: Correctly report Ti timer when HTX and keepalives are used
2019/07/12 : 1.9r1 (1.0.0-202.608)
- BUG/MAJOR: listener: fix thread safety in resume_listener()
- MINOR: task: introduce work lists
- MINOR: lists: add LIST_ADDED() to check if an element belongs to a list
- BUG/MEDIUM: mux-h1: Don't release h1 connection if there is still data to send
- BUG/MEDIUM: da: cast the chunk to string.
- BUG/MEDIUM: checks: Don't attempt to read if we destroyed the connection.
- BUG/MINOR: server: Be really able to keep "pool-max-conn" idle connections
- BUG/MEDIUM: fd/threads: fix excessive CPU usage on multi-thread accept
- BUG/MEDIUM: servers: Don't forget to set srv_cs to NULL if we can't reuse it.
- BUG/MEDIUM: stream-int: Don't rely on CF_WRITE_PARTIAL to unblock opposite si
- MINOR: stream-int: Factorize processing done after sending data in si_cs_send()
- BUG/MEDIUM: lb_fas: Don't test the server's lb_tree from outside the lock
- BUG/MEDIUM: sessions: Don't keep an extra idle connection in sessions.
- BUG/MEDIUM: checks: Make sure the tasklet won't run if the connection is closed.
- BUG/MEDIUM: connections: Always call shutdown, with no linger.
- BUG/MINOR: mux-h1: Don't return the empty chunk on HEAD responses
- BUG/MINOR: mux-h1: Skip trailers for non-chunked outgoing messages
- BUG/MEDIUM: mux-h1: Always release H1C if a shutdown for writes was reported
- BUG/MEDIUM: ssl: Don't attempt to set alpn if we're not using SSL.
- BUG/MINOR: mworker/cli: don't output a \n before the response
- BUG/MINOR: mux-h1: Make format errors during output formatting fatal
- BUG/MEDIUM: mux-h1: Use buf_room_for_htx_data() to detect too large messages
2019/06/26 : 1.9r1 (1.0.0-202.586)
- BUG/MINOR: memory: Set objects size for pools in the per-thread cache
- BUG/MAJOR: mux-h1: Don't crush trash chunk area when outgoing message is formatted
- BUG/MINOR: spoe: Fix memory leak if failing to allocate memory
- BUILD: makefile: do not rely on shell substitutions to determine git version
- BUILD: makefile: use :space: instead of digits to count commits
- BUG/MEDIUM: mworker: don't call the thread and fdtab deinit
- BUG/MEDIUM: lb_fwlc: Don't test the server's lb_tree from outside the lock
2019/06/20 : 1.9r1 (1.0.0-202.579)
- BUILD: hapee/51d: fix error when building with 51Degrees enabled
- BUG/MEDIUM: mux-h2: Remove the padding length when a DATA frame size is checked
- BUG/MEDIUM: mux-h2: Reset padlen when several frames are demux
- BUG/MINOR: task: prevent schedulable tasks from starving under high I/O activity
- BUG/MEDIUM: compression: Set Vary: Accept-Encoding for compressed responses
- BUG/MINOR: mux-h1: Add the header connection in lower case in outgoing messages
- BUG/MINOR: lua/htx: Make txn.req_req_* and txn.res_rep_* HTX aware
- BUG/MEDIUM: h2/htx: Update data length of the HTX when the cookie list is built
- BUG/MEDIUM: connections: Don't try to send early data if we have no mux.
- BUG/MEDIUM: connections: Don't use ALPN to pick mux when in mode TCP.
- BUG/MINOR: mux-h1: Wake busy mux for I/O when message is fully sent
- BUG/MEDIUM: connections: Don't call shutdown() if we want to disable linger.
- BUG/MINOR: fl_trace/htx: Be sure to always forward trailers and EOM
- MINOR: flt_trace: Don't scrash the original offset during the random forwarding
- BUG/MINOR: flt_trace/htx: Only apply the random forwarding on the message body.
- BUG/MEDIUM: proto_htx: Introduce the state ENDING during forwarding
- BUG/MINOR: http: Use the global value to limit the number of parsed headers
- BUG/MINOR: channel/htx: Call channel_htx_full() from channel_full()
- MINOR: doc: update the manpage and usage message about -S
- MINOR: doc: mention HAPROXY_LOCALPEER in the man
- MINOR: doc: add master-worker in the man page
- MINOR: doc: Remove -Ds option in man page
- BUG/MINOR: 51d/htx: The _51d_fetch method, and the methods it calls are now HTX aware.
- BUG/MINOR: http-rules: mention "deny_status" for "deny" in the error message
- BUG/MEDIUM: compression/htx: Fix the adding of the last data block
- BUG/MEDIUM: mux-h2: make sure the connection timeout is always set
- BUG/MINOR: time: make sure only one thread sets global_now at boot
- BUG/MINOR: mux-h1: Don't send more data than expected
- BUG/MINOR: mux-h1: errflag must be set on H1S and not H1M during output processing
- BUG/MINOR: channel/htx: Don't alter channel during forward for empty HTX message
- BUG/MINOR: peers: Wrong stick-table update message building.
- BUG/MEDIUM: vars: make the tcp/http unset-var() action support conditions
- BUG/MEDIUM: vars: make sure the scope is always valid when accessing vars
- BUILD: tools: do not use the weak attribute for trace() on obsolete linkers
- BUG/MEDIUM: mux-h1: only check input data for the current stream, not next one
- BUG/MEDIUM: connection: fix multiple handshake polling issues
- BUG/MINOR: deinit/threads: make hard-stop-after perform a clean exit
- BUG/MEDIUM: connection: Use the session to get the origin address if needed.
- BUG/MEDIUM: h2: Don't forget to set h2s->cs to NULL after having free'd cs.
- MEDIUM: sessions: Introduce session flags.
- BUG/MEDIUM: mux-h1: Don't skip the TCP splicing when there is no more data to read
- BUG/MEDIUM: http: fix "http-request reject" when not final
- BUG/MINOR: mux-h1: Wake up the mux if it is busy when a 1xx response is handled
- BUG/MEDIUM: mux-h1: Don't switch the mux in BUSY mode on 1xx messages
- BUG/MEDIUM: threads: fix double-word CAS on non-optimized 32-bit platforms
2019/05/27 : 1.9r1 (1.0.0-202.534)
- BUG/MEDIUM: queue: fix the tree walk in pendconn_redistribute.
- BUG/MAJOR: lb/threads: make sure the avoided server is not full on second pass
- BUILD: ssl: fix latest LibreSSL reg-test error
- BUG/MINOR: ssl_sock: Fix memory leak when disabling compression
- DOC: fix typos
2019/05/24 : 1.9r1 (1.0.0-201.529)
- BUG/MINOR: htx: Remove a forgotten while loop in htx_defrag()
- BUG/MEDIUM: proto-htx: Not forward too much data when 1xx reponses are handled
- BUG/MINOR: mux-h1: Report EOI instead EOS on parsing error or H2 upgrade
- BUG/MINOR: mux-h2: Count EOM in bytes sent when a HEADERS frame is formatted
- BUG/MEDIUM: spoe: Don't use the SPOE applet after releasing it
- BUG/MEDIUM: dns: make the port numbers unsigned
- BUG/MEDIUM: WURFL: segfault in wurfl-get() with missing info.
- BUG/MEDIUM: streams: Don't switch from SI_ST_CON to SI_ST_DIS on read0.
- BUILD: makefile: remove -fomit-frame-pointer optimisation (solaris)
- BUILD: makefile: use USE_OBSOLETE_LINKER for solaris
- MINOR: cli/activity: show the dumping thread ID starting at 1
- DOC: management: place "show activity" at the right place
- BUILD: ist: turn the lower/upper case tables to literal on obsolete linkers
- BUG/MEDIUM: threads: Fix build for 32bits arch with dwcas.
- BUG/MINOR: http_fetch: Rely on the smp direction for "cookie()" and "hdr()"
2019/05/13 : 1.9r1 (1.0.0-200.514)
- BUG/MINOR: vars: Fix memory leak in vars_check_arg
- MINOR: spoe: Set the argument chunk size to 0 when SPOE variables are checked
- BUG/MINOR: htx: make sure to always initialize the HTTP method when parsing a buffer
- BUG/MAJOR: mux-h2: do not add a stream twice to the send list
- BUILD: threads: fix again the __ha_cas_dw() definition
- BUILD: threads: Add __ha_cas_dw fallback for single threaded builds
- BUG/MEDIUM: h2: Don't check send_wait to know if we're in the send_list.
- BUG/MEDIUM: http: Use pointer to the begining of input to parse message headers
- BUG/MINOR: stream: Attach the read side on the response as soon as possible
- BUILD: ssl: fix again a libressl build failure after the openssl FD leak fix
- BUG/MEDIUM: h2: Make sure we set send_list to NULL in h2_detach().
- MINOR: htx: Split on DATA blocks only when blocks are moved to an HTX message
- BUG/MINOR: htx: Never transfer more than expected in htx_xfer_blks()
- BUG/MINOR: mux-h1: Fix the parsing of trailers
- BUG/MEDIUM: spoe: Be sure the sample is found before setting its context
- BUG/MINOR: mux-h2: fix the condition to close a cs-less h2s on the backend
- BUG/MINOR: mworker/ssl: close OpenSSL FDs on reload
- BUG/MEDIUM: h2/htx: never leave a trailers block alone with no EOM block
- BUG/MEDIUM: mux-h2/htx: never wait for EOM when processing trailers
- MEDIUM: mux-h2: discard contents that are to be sent after a shutdown
- BUG/MEDIUM: h2/htx: always fail on too large trailers
- BUG/MINOR: mux-h2: rely on trailers output not input to turn them to empty data
- BUG/MEDIUM: h2: Revamp the way send subscriptions works.
- MINOR: doc: Document allow-0rtt on the server line.
- BUG/MEDIUM: ssl: Don't attempt to use early data with libressl.
- DOC: Fix typo in keyword matrix
- BUG/MINOR: logs/threads: properly split the log area upon startup
- MINOR: connection: make the debugging helper functions safer
- BUG/MINOR: activity: always initialize the profiling variable
- CLEANUP: task: report calls as unsigned in show sess
- BUG/MEDIUM: checks: make sure the warmup task takes the server lock
- BUG/MEDIUM: streams: Don't add CF_WRITE_ERROR if early data were rejected.
- BUG/MEDIUM: ssl: Use the early_data API the right way.
2019/05/02 : 1.9r1 (1.0.0-200.481)
- BUG/MEDIUM: connections: Make sure we remove CO_FL_SESS_IDLE on disown.
- BUG/MEDIUM: channels: Don't forget to reset output in channel_erase().
- BUG/MEDIUM: pattern: fix memory leak in regex pattern functions
- BUG/MINOR: checks: free memory allocated for tasklets
- BUG/MINOR: log: properly free memory on logformat parse error and deinit()
- BUG/MINOR: haproxy: fix rule->file memory leak
- BUG/MEDIUM: servers: fix typo "src" instead of "srv"
- BUG/MEDIUM: port_range: Make the ring buffer lock-free.
- MINOR: threads: Implement HA_ATOMIC_LOAD().
- CLEANUP: config: Don't alter listener->maxaccept when nbproc is set to 1
- MINOR: config: Test validity of tune.maxaccept during the config parsing
- BUG/MEDIUM: listener: Fix how unlimited number of consecutive accepts is handled
2019/04/30 : 1.9r1 (1.0.0-200.469)
- BUG/MAJOR: map/acl: real fix segfault during show map/acl on CLI
- BUG/MEDIUM: contrib/modsecurity: If host header is NULL, don't try to strdup it
- DOC: contrib/modsecurity: Typos and fix the reject example
- MINOR: spoe: Use the sample context to pass frag_ctx info during encoding
- BUG/MEDIUM: spoe: arg len encoded in previous frag frame but len changed
- BUG/MINOR: http: Call stream_inc_be_http_req_ctr() only one time per request
2019/04/29 : 1.9r1 (1.0.0-200.463)
- BUG/MEDIUM: mux-h2: properly deal with too large headers frames
- BUG/MINOR: htx: Exclude TCP proxies when the HTX mode is handled during startup
- BUG/MAJOR: muxes: Use the HTX mode to find the best mux for HTTP proxies only
2019/04/24 : 1.9r1 (1.0.0-200.460)
- DOC: wurfl: added point of contact in MAINTAINERS file
- MINOR: wurfl: enabled multithreading mode
- BUG/MAJOR: lb/threads: fix AB/BA locking issue in round-robin LB
- BUG/MINOR: spoe: Don't systematically wakeup SPOE stream in the applet handler
- BUG/MEDIUM: stream: Fix the way early aborts on the client side are handled
2019/04/19 : 1.9r1 (1.0.0-200.455)
- MINOR: ssl/cli: async fd io-handlers printable on show fd
- BUG/MINOR: da: Get the request channel to call CHECK_HTTP_MESSAGE_FIRST()
- BUG/MINOR: 51d: Get the request channel to call CHECK_HTTP_MESSAGE_FIRST()
- BUG/MEDIUM: stream: Don't request a server connection if a shutw was scheduled
- BUG/MEDIUM: thread/http: Add missing locks in set-map and add-acl HTTP rules
- BUG/MEDIUM: h1: Don't parse chunks CRLF if not enough data are available
- MINOR: peers: adds counters on show peers about tasks calls.
- DOC: update for "show peers" CLI command.
- MINOR: peers: Add a new command to the CLI for peers.
- BUG/MINOR: acl: properly detect pattern type SMP_T_ADDR
- BUG/MEDIUM: maps: only try to parse the default value when it's present
- BUG/MINOR: mworker: disable busy polling in the master process
- REGTESTS: exclude tests that require ssl, pcre if no such feature is enabled
- BUG/MEDIUM: applets: Don't use task_in_rq().
- BUG/MAJOR: task: make sure never to delete a queued task
- MINOR: tasks: Don't set the TASK_RUNNING flag when adding in the tasklet list.
- MEDIUM: tasks: No longer use rq.node.leaf_p as a lock.
- MINOR: tasks: Don't consider we can wake task with tasklet_wakeup().
- BUG/MEDIUM: tasks: Make sure we modify global_tasks_mask with the rq_lock.
- BUG/MEDIUM: tasks: Make sure we set TASK_QUEUED before adding a task to the rq.
- BUG/MINOR: http_fetch/htx: Allow permissive sample prefetch for the HTX
- BUG/MAJOR: http_fetch: Get the channel depending on the keyword used
- BUG/MEDIUM: htx: Don't return the start-line if the HTX message is empty
- MINOR: mux-h1: Handle read0 during TCP splicing
- BUG/MEDIUM: mux-h1: Enable TCP splicing to exchange data only
- BUG/MEDIUM: mux-h1: Notify the stream waiting for TCP splicing if ibuf is empty
- BUG/MINOR: mux-h1: Don't switch the parser in busy mode if other side has done
- BUG/MINOR: mux-h1: Process input even if the input buffer is empty
- BUILD/MINOR: listener: Silent a few signedness warnings.
2019/04/16 : 1.9r1 (1.0.0-200.426)
- BUG/MINOR: mworker: ensure that we still quits with SIGINT
- BUG/MINOR: mworker: don't exit with an ambiguous value
- BUG/MINOR: listener/mq: correctly scan all bound threads under low load
- MINOR: init: add a "set-dumpable" global directive to enable core dumps
- BUG/MAJOR: lb/threads: fix insufficient locking on round-robin LB
- BUILD: htx: fix a used uninitialized warning on is_cookie2
2019/04/15 : 1.9r1 (1.0.0-200.420)
- BUG/MEDIUM: h2: Make sure we're not already in the send_list in h2_subscribe().
- MINOR: tasks: restore the lower latency scheduling when niced tasks are present
- MEDIUM: tasks: only base the nice offset on the run queue depth
- BUILD: task/thread: fix single-threaded build of task.c
- MEDIUM: tasks: improve fairness between the local and global queues
- CLEANUP: task: do not export rq_next anymore
- BUILD: cli/threads: fix build in single-threaded mode
- MINOR: cli/activity: report the accept queue sizes in "show activity"
- MINOR: cli/listener: report the number of accepts on "show activity"
- BUG/MINOR: listener: renice the accept ring processing task
- MINOR: skip get_gmtime where tm is unused
- CLEANUP: task: only perform a LIST_DEL() when the list is not empty
- OPTIM: task: limit the impact of memory barriers in taks_remove_from_task_list()
- BUILD: listener: shut up a build warning when threads are disabled
- BUG/MEDIUM: init/threads: consider epoll_fd/pipes for automatic maxconn calculation
- MINOR: task: use LIST_DEL_INIT() to remove a task from the queue
- BUG/MINOR: proto_htx: Reset to_forward value when a message is set to DONE
- BUG/MINOR: contrib/prometheus-exporter: Fix applet accordingly to recent changes
- BUG/MINOR: ssl: Fix 48 byte TLS ticket key rotation
- BUG/MEDIUM: map: Fix memory leak in the map converter
- BUG/MINOR: mux-h1: Handle the flag CS_FL_KILL_CONN during a shutdown read/write
- MINOR: mux-h1: Simplify handling of 1xx responses
- BUG/MEDIUM: htx: Fix the process of HTTP CONNECT with h2 connections
- MINOR: proto_htx: Don't adjust transaction mode anymore in HTX analyzers
- MEDIUM: htx: Deprecate the option 'http-tunnel' and ignore it in HTX
- BUG/MEDIUM: htx: Don't crush blocks payload when append is done on a data block
- BUG/MEDIUM: htx: Defrag if blocks position is changed and the payloads wrap
- BUG/MINOR: spoe: Be sure to set tv_request when each message fragment is encoded
- BUG/MEDIUM: spoe: Return an error if nothing is encoded for fragmented messages
- BUG/MEDIUM: spoe: Queue message only if no SPOE applet is attached to the stream
- BUG/MINOR: tasks: make sure the first task to be queued keeps its nice value
- BUG/MEDIUM: task/threads: address a fairness issue between local and global tasks
- BUG/MEDIUM: stream_interface: Don't bother doing chk_rcv/snd if not connected.
- BUG/MEDIUM: streams: Only re-run process_stream if we're in a connected state.
- BUG/MEDIUM: pattern: assign pattern IDs after checking the config validity
- BUG/MEDIUM: stream: Don't clear the stream_interface flags in si_update_both.
- BUG/MEDIUM: streams: Store prev_state before calling si_update_both().
- BUG/MEDIUM: streams: Don't remove the SI_FL_ERR flag in si_update_both().
- BUG/MEDIUM: htx: fix random premature abort of data transfers
- BUG/MEDIUM: h2: Don't attempt to recv from h2_process_demux if we subscribed.
- BUILD: connection: fix naming of ip_v field
- BUILD: use inttypes.h instead of stdint.h
- BUILD: fix backport of initcall variant
- BUG/MINOR: htx: Preserve empty HTX messages with an unprocessed parsing error
- MINOR: cli: start addresses by a prefix in 'show cli sockets'
- BUG/MINOR: cli: correctly handle abns in 'show cli sockets'
2019/04/10 : 1.9r1 (1.0.0-200.374)
- MEDIUM: hapee/modules: load the STG_REGISTER initcalls
- MINOR: initcall: Don't forget to define the __start/stop_init_##stg symbols.
2019/04/03 : 1.9r1 (1.0.0-200.372)
- BUG/MEDIUM: peers: fix a case where peer session is not cleanly reset on release.
2019/04/01 : 1.9r1 (1.0.0-200.371)
- MINOR: ssl: Add aes_gcm_dec converter
- MINOR: tools: make memvprintf() never pass a NULL target to vsnprintf()
- BUILD: cache: avoid a build warning with some compilers/linkers
- BUILD: chunk: properly declare pool_head_trash as extern
- BUILD: http: properly mark some struct as extern
- BUILD: makefile: work around an old bug in GNU make-3.80
- BUG/MAJOR: checks: segfault during tcpcheck_main
- BUG/MEDIUM: checks: Don't bother subscribing if we have a connection error.
2019/03/28 : 1.9r1 (1.0.0-200.363)
- BUG/MEDIUM: mworker: don't free the wrong child when not found
- BUG/MINOR: mux-h1: Only skip invalid C-L headers on output
- REGTEST: script: remove platform-specific assigments of OPTIONS
- REGTEST: script: make the script use the new features list
- BUILD: report the whole feature set with their status in haproxy -vv
- BUILD: Makefile: also report disabled options in the BUILD_OPTIONS variable
- BUILD: Makefile: consider a variable's origin and not its value for the options list
- MINOR: init: report the list of optionally available services
- BUILD: tools: fix a build warning on some 32-bit archs
- REGTEST: remove unexpected "nbthread" statement from Lua test cases
- DOC: The option httplog is no longer valid in a backend.
- REGTEST: Enable again reg tests with HEAD HTTP method usage.
- BUG/MEDIUM: task/h2: add an idempotent task removal fucntion
- BUG/MEDIUM: h2: Remove the tasklet from the task list if unsubscribing.
- BUG/MEDIUM: h2: Follow the same logic in h2_deferred_shut than in h2_snd_buf.
- BUG/MEDIUM: h2: Use the new sending_list in h2s_notify_send().
- BUG/MEDIUM: h2: only destroy the h2s if h2s->cs is NULL.
- CLEANUP: muxes/stream-int: Remove flags CS_FL_READ_NULL and SI_FL_READ_NULL
- BUG/MEDIUM: http/htx: Fix handling of the option abortonclose
- MINOR: mux-h1: Set CS_FL_EOI the end of the message is reached
- BUG/MEDIUM: mux-h2: make sure to always notify streams of EOS condition
- MEDIUM: mux-h2: Don't mix the end of the message with the end of stream
- CONTRIB: debug: report the CS and CF's EOI flags
- MINOR: channel: Report EOI on the input channel if it was reached in the mux
- MINOR: connection: and new flag to mark end of input (EOI)
- MINOR: mux-h2: Remove useless test on ES flag in h2_frt_transfer_data()
- BUG/MINOR: proto-http: Don't forward request body anymore on error
- BUG/MEDIUM: h2: Try to be fair when sending data.
- MINOR: lists: add a LIST_DEL_INIT() macro
- BUG/MINOR: log: properly format IPv6 address when LOG_OPT_HEXA modifier is used.
- MINOR: mux-h2: copy small data blocks more often and reduce the number of pauses
- BUG/MEDIUM: ssl: ability to set TLS 1.3 ciphers using ssl-default-server-ciphersuites
- BUG/MINOR: doc: Be accurate on the behavior on pool-purge-delay.
- BUG/MEDIUM: lua: Fully consume large requests when an HTTP applet ends
- BUG/MINOR: stats: Fully consume large requests in the stats applet
- BUG/MINOR: cache: Fully consume large requests in the cache applet
- BUG/MEDIUM: mux-h2: Use the right list in h2_stop_senders().
- BUG/MEDIUM: mux-h2: Don't bother keeping the h2s if detaching and nothing to send.
- BUG/MEDIUM: mux-h2: Make sure we destroyed the h2s once shutr/shutw is done.
- MINOR: proto-http/proto-htx: Make error handling clearer during data forwarding
- MINOR: muxes: Report the Last read with a dedicated flag
- MINOR: mux-h2: Set REFUSED_STREAM error to reset a stream if no data was never sent
- BUG/MEDIUM: mux-h2: Always wakeup streams with no id to avoid frozen streams
- BUG/MINOR: http/counters: fix missing increment of fe->srv_aborts
- BUG/MAJOR: stats: Fix how huge POST data are read from the channel
- BUILD: Makefile: resolve LEVEL before calling run-regtests
- BUILD: Makefile: allow the reg-tests target to be verbose
2019/03/19 : 1.9r1 (1.0.0-200.316)
- BUG/MAJOR: spoe: Fix initialization of thread-dependent fields
- Revert "REGTEST: Enable reg tests with HEAD HTTP method usage."
- BUG/MINOR: stats: Be more strict on what is a valid request to the stats applet
- MINOR: stats: Move stuff about the stats status codes in stats files
- MINOR: stats: Add the status code STAT_STATUS_IVAL to handle invalid requests
- BUG/MINOR: lua/htx: Don't forget to call htx_to_buf() when appropriate
- BUG/MINOR: lua/htx: Use channel_add_input() when response data are added
- BUG/MINOR: stats/htx: Call channel_add_input() when response headers are sent
- BUG/MINOR: mux-h1: Don't report an error on EOS if no message was received
- BUG/MEDIUM: tasks: Make sure we wake sleeping threads if needed.
- BUG/MEDIUM: threads/fd: do not forget to take into account epoll_fd/pipes
- BUG/MAJOR: tasks: Use the TASK_GLOBAL flag to know if we're in the global rq.
- DOC: Remove tabs and fixed punctuation.
- MEDIUM: threads: Use __ATOMIC_SEQ_CST when using the newer atomic API.
- BUG/MEDIUM: listeners: Don't call fd_stop_recv() if fd_updt is NULL.
- MINOR: fd: Remove debugging code.
- BUG/MEDIUM: listener: make sure we don't pick stopped threads
- MINOR: listener: move thr_idx from the bind_conf to the listener
- CLEANUP: listener: remove old thread bit mapping
- MEDIUM: listener: change the LB algorithm again to use two round robins instead
- MINOR: tools: implement my_flsl()
- MINOR: listener: improve incoming traffic distribution
- BUG/MEDIUM: list: fix incorrect pointer unlocking in LIST_DEL_LOCKED()
- MINOR: config: continue to rely on DEFAULT_MAXCONN to set the minimum maxconn
- MINOR: config: remove obsolete use of DEFAULT_MAXCONN at various places
- BUG/MAJOR: config: Wrong maxconn adjustment.
2019/03/11 : 1.9r1 (1.0.0-197.290)
- Revert "REGTEST: Peers reg tests."
- BUG/MINOR: ssl: fix warning about ssl-min/max-ver support
- BUG/MEDIUM: logs: Only attempt to free startup_logs once.
- BUG/MEDIUM: h2/htx: verify that :path doesn't contain invalid chars
- MINOR: mux-h2: always pass HTX_FL_PARSING_ERROR between h2s and buf on RX
- MINOR: htx: unconditionally handle parsing errors in requests or responses
- BUG/MAJOR: mux-h2: fix race condition between close on both ends
- REGTEST: Enable reg tests with HEAD HTTP method usage.
- REGTEST: Peers reg tests.
- MINOR: config: relax the range checks on cpu-map
- BUG/MEDIUM: list: fix again LIST_ADDQ_LOCKED
- DOC: update the text related to the global maxconn value
- MEDIUM: init: make the global maxconn default to what rlim_fd_cur permits
- MINOR: init: move some maxsock updates earlier
- MINOR: init: make the maxpipe computation more accurate
- REGTEST: fix a spurious "nbthread 4" in the connection test
- BUG/MINOR: mworker: be careful to restore the original rlim_fd_cur/max on reload
- BUG/MINOR: checks: make external-checks restore the original rlim_fd_cur/max
- BUG/MINOR: init: never lower rlim_fd_max
- MINOR: global: keep a copy of the initial rlim_fd_cur and rlim_fd_max values
- BUG/MEDIUM: hapee/51d: fix a segfault on exit when 51d configuration is not loaded
- MINOR: hapee/wurfl: use ci_head() in src/wurfl.c for 1.9 compatibility
- BUILD: hapee/modules: clean(up) the copts-hash file not copts_hash
- MINOR: tools: improve the popcount() operation
- MINOR: mux-h2: make the H2 MAX_FRAME_SIZE setting configurable
- MEDIUM: config: don't enforce a low frontend maxconn value anymore
- MINOR: proxy: do not change the listeners' maxconn when updating the frontend's
- MINOR: listener: do not needlessly set l->maxconn
- MINOR: listener: introduce listener_backlog() to report the backlog value
- BUG/MEDIUM: list: correct fix for LIST_POP_LOCKED's removal of last element
- MINOR: cfgparse: Add a cast to make gcc happier.
- BUG/MEDIUM: listener: make sure the listener never accepts too many conns
- BUG/MEDIUM: listener: use a self-locked list for the dequeue lists
- MINOR: server: remove a few unneeded LIST_INIT calls after LIST_DEL_LOCKED
- MINOR: list: make the delete and pop operations idempotent
- BUG/MEDIUM: list: add missing store barriers when updating elements and head
- BUG/MEDIUM: list: fix LIST_POP_LOCKED's removal of the last pointer
- BUG/MEDIUM: list: fix the rollback on addq in the locked liss
- MEDIUM: hapee/51d: use fiftyoneDegreesProvider to access the pool and dataset
- MINOR: backend: make the random algorithm support a number of draws
- BUG/MINOR: config: don't over-count the global maxsock value
- DOC: update management.txt to reflect that threads are used by default
- MAJOR: threads: enable one thread per CPU by default
- MINOR: config: add global tune.listener.multi-queue setting
- MINOR: activity: add accept queue counters for pushed and overflows
- MAJOR: listener: use the multi-queue for multi-thread listeners
- MINOR: listener: implement multi-queue accept for threads
- MINOR: listener: pre-compute some thread counts per bind_conf
- MINOR: tools: implement functions to look up the nth bit set in a mask
- MINOR: listener: maintain a per-thread count of the number of connections on a listener
- OPTIM: listener: optimize cache-line packing for struct listener
- MAJOR: listener: do not hold the listener lock in listener_accept()
- BUG/MINOR: listener: keep accept rate counters accurate under saturation
- MEDIUM: servers: Reorganize the way idle connections are cleaned.
- MEDIUM: servers: Used a locked list for idle_orphan_conns.
- BUG/MEDIUM: lists: Properly handle the case we're removing the first elt.
- BUG/MEDIUM: h2: advertise to servers that we don't support push
- BUG/MEDIUM: proto_htx: Fix functions applying regex filters on HTX messages
- BUG/MINOR: mux-h1: Always initilize h1m variable in h1_process_input()
- BUG/MINOR: cache/htx: Return only the headers of cached objects to HEAD requests
- BUG/MEDIUM: cache: Get objects from the cache only for GET and HEAD requests
- BUG/MAJOR: cache/htx: Set the start-line offset when a cached object is served
- MINOR: channel/htx: Add function to skips output bytes from an HTX channel
- MINOR: htx: Add function to drain data from an HTX message
- BUG/MINOR: channel: Set CF_WROTE_DATA when outgoing data are skipped
- BUG/MEDIUM: mux-h1: Report the right amount of data xferred in h1_rcv_buf()
- BUG/MAJOR: listener: Make sure the listener exist before using it.
- BUG/MAJOR: fd/threads, task/threads: ensure all spin locks are unlocked
- BUG/MEDIUM: servers: Add a per-thread counter of idle connections.
- BUG/MEDIUM: servers: Use atomic operations when handling curr_idle_conns.
- BUG/MEDIUM: mux-h2/htx: send an empty DATA frame on empty HTX trailers
- BUG/MEDIUM: htx: count the amount of copied data towards the final count
- MEDIUM: listener: keep a single thread-mask and warn on "process" misuse
- MAJOR: config: disable support for nbproc and nbthread in parallel
- DOC: fix alphabetic ordering for "tune.fail-alloc" setting
- MINOR: lists: Implement locked variations.
- BUG/MINOR: config: Reinforce validity check when a process number is parsed
- MINOR: config: make MAX_PROCS configurable at build time
- MINOR: threads: make use of thread_mask() to simplify some thread calculations
- MINOR: config: simplify bind_proc processing using proc_mask()
- MINOR: global: add proc_mask() and thread_mask()
- MINOR: config: keep an all_proc_mask like we have all_threads_mask
- CLEANUP: threads: use nbits to calculate the thread mask
- CLEANUP: threads: fix misleading comment about all_threads_mask
- BUG/MINOR: threads: fix the process range of thread masks
- BUG/MINOR: tune.fail-alloc: Don't forget to initialize ret.
- MINOR: debug: Add an option that causes random allocation failures.
- MINOR: threads: make MAX_THREADS configurable at build time
- MINOR: cfgparse: make the process/thread parser support a maximum value
- Revert "BUG/MINOR: config: Reinforce validity check when a process number is parsed"
- CONTRIB: contrib/prometheus-exporter: Add a Prometheus exporter for HAProxy
- BUILD: makefile: add an EXTRA_OBJS variable to help build optional code
- MINOR: mux-h2: Set HTX extra value when possible
- BUG/MEDIUM: h2/htx: Correctly handle interim responses when HTX is enabled
- BUG/MINOR: proto-htx: Consider a XFER_LEN message as chunked by default
- BUG/MINOR: mux-h2: Don't add ":status" pseudo-header on trailers
- BUG/MINOR: mux-h1: Add "transfer-encoding" header on outgoing requests if needed
- MINOR: h2/htx: Set the flag HTX_SL_F_BODYLESS for messages without body
- BUG/MEDIUM: mux-h2/htx: Always set CS flags before exiting h2_rcv_buf()
- BUILD/MEDIUM: initcall: Fix build on MacOS.
- BUG/MEDIUM: http_fetch: fix "req.body_len" and "req.body_size" fetch methods in HTX mode
- BUG/MEDIUM: proto_htx: Fix data size update if end of the cookie is removed
- MEDIUM: 51d: Enabled multi threaded operation in the 51Degrees module.
- BUG/MINOR: hapee/modules: display detailed error message on mod_init() failure
- BUG/MEDIUM: http_fetch: fix the "base" and "base32" fetch methods in HTX mode
- BUILD/MINOR: htx: fix some potential null-deref warnings with http_find_stline
- BUILD/MINOR: peers: remove an impossible null test in intencode()
- BUILD/MINOR: tools: fix build warning in the date conversion functions
- BUILD/MINOR: stream: avoid a build warning with threads disabled
- BUG/MAJOR: stream: avoid double free on unique_id
- BUG: 51d: In Hash Trie, multi header matching was affected by the header names stored globaly.
- BUG/MINOR: mux-h1: verify the request's version before dropping connection: keep-alive
- BUG/MINOR: config: Reinforce validity check when a process number is parsed
- BUG/MAJOR: spoe: Don't try to get agent config during SPOP healthcheck
- BUG/MEDIUM: server: initialize the orphaned conns lists and tasks at the end
- CLEANUP: server: fix indentation mess on idle connections
- BUG/MEDIUM: server: initialize the idle conns list after parsing the config
- BUG/MEDIUM: spoe: initialization depending on nbthread must be done last
- BUG/MINOR: lua: initialize the correct idle conn lists for the SSL sockets
- BUG/MINOR: spoe: do not assume agent->rt is valid on exit
- DOC: ssl: Stop documenting ciphers example to use
- DOC: ssl: Clarify when pre TLSv1.3 cipher can be used
- BUG/MINOR: config: make sure to count the error on incorrect track-sc/stick rules
- BUG/MAJOR: htx/backend: Make all tests on HTTP messages compatible with HTX
- MEDIUM: backend: move all LB algo parameters into an union
- MINOR: backend: move hash_balance_factor out of chash
- MINOR: backend: remap the balance uri settings to lbprm.arg_opt{1,2,3}
- MINOR: backend: make the header hash use arg_opt1 for use_domain_only
- MINOR: backend: add new fields in lbprm to store more LB options
- MINOR: backend: make headers and RDP cookie also use arg_str/len
- MINOR: backend: move url_param_name/len to lbprm.arg_str/len
- BUG/MAJOR: spoe: verify that backends used by SPOE cover all their callers' processes
- BUG/MAJOR: config: verify that targets of track-sc and stick rules are present
- BUG/MINOR: task: close a tiny race in the inter-thread wakeup
- BUG/MINOR: compression: properly report compression stats in HTX mode
- BUG/MINOR: config: fix bind line thread mask validation
- BUG/MEDIUM: stream: Don't forget to free s->unique_id in stream_free().
- BUG/MEDIUM: mux-h2: always set :authority on request output
- BUG/MEDIUM: mux-h2: always omit :scheme and :path for the CONNECT method
- BUG/MINOR: backend: check srv_conn before dereferencing it
- BUG/MEDIUM: htx: check the HTX compatibility in dynamic use-backend rules
- BUG/MEDIUM: backend: always release the previous connection into its own target srv_list
- BUG/MEDIUM: mux-h2: properly consider the peer's advertised max-concurrent-streams
- MINOR: mux-h2: learn and store the peer's advertised MAX_CONCURRENT_STREAMS setting
- MINOR: mux-h2: make sure to only check concurrency limit on the frontend
- MINOR: mux-h2: max-concurrent-streams should be unsigned
- BUG/MEDIUM: mux-h2: do not close the connection on aborted streams
- MINOR: connstream: have a new flag CS_FL_KILL_CONN to kill a connection
- MINOR: stream-int: add a new flag to mention that we want the connection to be killed
- BUG/MEDIUM: mux-h2: wait for the mux buffer to be empty before closing the connection
- MINOR: mux-h2: consistently rely on the htx variable to detect the mode
- BUG/MINOR: mux-h2: make sure request trailers on aborted streams don't break the connection
- CLEANUP: mux-h2: remove stream ID and frame length checks from the frame parsers
- CLEANUP: mux-h2: clean the stream error path on HEADERS frame processing
- CLEANUP: mux-h2: remove misleading leftover test on h2s' nullity
- MEDIUM: mux-h2: check the frame validity before considering the stream state
- MINOR: h2: add a generic frame checker
- BUG/MINOR: mux-h2: make sure response HEADERS are not received in other states than OPEN and HLOC
- BUG/MEDIUM: mux-h2: do not abort HEADERS frame before decoding them
- BUG/MEDIUM: mux-h2: make sure never to send GOAWAY on too old streams
- BUG/MEDIUM: mux-h2: fix two half-closed to closed transitions
- BUG/MEDIUM: mux-h2: wake up flow-controlled streams on initial window update
- BUG/MEDIUM: mux-h2: only close connection on request frames on closed streams
- BUG/MINOR: mux-h2: always compare content-length to the sum of DATA frames
- MEDIUM: h2: always parse and deduplicate the content-length header
- MINOR: stream: don't wait before retrying after a failed connection reuse
- MEDIUM: stream-int: always mark pending outgoing SI_ST_CON
- MINOR: htx: never check for null htx pointer in htx_is_{,not_}empty()
- DOC: htx: make it clear that htxbuf() and htx_from_buf() always return valid pointers
- BUG/MEDIUM: buffer: Make sure b_is_null handles buffers waiting for allocation.
- BUG/MEDIUM: servers: Close the connection if we failed to install the mux.
- BUG/MEDIUM: h2: In h2_send(), stop the loop if we failed to alloc a buf.
- BUG/MEDIUM: checks: Don't try to set ALPN if connection failed.
- BUG/MEDIUM: servers: Don't add an incomplete conn to the server idle list.
- BUG/MEDIUM: servers: Only destroy a conn_stream we just allocated.
- BUG/MEDIUM: checks: Check that conn_install_mux succeeded.
- BUG/MEDIUM: peers: Handle mux creation failure.
- MINOR: xref: Add missing barriers.
- BUG/MINOR: stream: don't close the front connection when facing a backend error
- BUG/MINOR: server: fix logic flaw in idle connection list management
- BUG/MEDIUM: connections: Don't forget to remove CO_FL_SESS_IDLE.
- SCRIPTS: add the issue tracker URL to the announce script
- DOC: add a missing space in the documentation for bc_http_major
- BUG/MINOR: deinit: tcp_rep.inspect_rules not deinit, add to deinit
- DOC: compression: Update the reasons for disabled compression
- BUG/MEDIUM: compression: Rewrite strong ETags
- BUG/MEDIUM: mux-h1: Don't add "transfer-encoding" if message-body is forbidden
- BUG/MEDIUM: backend: always call si_detach_endpoint() on async connection failure
- BUG/MEDIUM: servers: Attempt to reuse an unfinished connection on retry.
- BUG/MINOR: task: fix possibly missed event in inter-thread wakeups
- BUG/MINOR: spoe: corrected fragmentation string size
- BUG/MINOR: mux-h2: do not report available outgoing streams after GOAWAY
- BUG/MINOR: listener: always fill the source address for accepted socketpairs
- DOC: nbthread is no longer experimental.
- MINOR: mux-h2: always consider a server's max-reuse parameter
- MINOR: server: add a max-reuse parameter
- BUG/MEDIUM: backend: never try to attach to a mux having no more stream available
- BUG/MINOR: mux-h2: refuse to allocate a stream with too high an ID
- BUG/MINOR: mux-h2: always check the stream ID limit in h2_avail_streams()
- BUG/MINOR: stream: take care of synchronous errors when trying to send
- MINOR: server: make sure pool-max-conn is >= -1
- BUG/MINOR: hpack: return a compression error on invalid table size updates
- BUG/MINOR: mux-h2: make it possible to set the error code on an already closed stream
- BUG/MINOR: mux-h2: headers-type frames in HREM are always a connection error
- BUG/MINOR: mux-h2: CONTINUATION in closed state must always return GOAWAY
- MINOR: h2: declare new sets of frame types
- BUG/MEDIUM: mux-h2: properly abort on trailers decoding errors
- BUG/MEDIUM: backend: also remove from idle list muxes that have no more room
- BUG/MAJOR: mux-h2: don't destroy the stream on failed allocation in h2_snd_buf()
- BUG/MINOR: mux-h1: avoid copying output over itself in zero-copy
- BUG/MINOR: mux-h1: Apply the reserve on the channel's buffer only
- BUG/MEDIUM: mux-h2/htx: Respect the channel's reserve
- BUG/MINOR: proto-htx: Return an error if all headers cannot be received at once
- DOC: mention the effect of nf_conntrack_tcp_loose on src/dst
- BUG/MEDIUM: ssl: Fix handling of TLS 1.3 KeyUpdate messages
- BUG/MINOR: check: Wake the check task if the check is finished in wake_srv_chk()
- BUG/MINOR: server: don't always trust srv_check_health when loading a server state
- BUG/MINOR: startup: certain goto paths in init_pollers fail to free
- BUG/MEDIUM: connections: Add the CO_FL_CONNECTED flag if a send succeeded.
- BUG/MEDIUM: servers: Make assign_tproxy_address work when ALPN is set.
- BUG/MEDIUM: checks: fix recent regression on agent-check making it crash
- REGTEST: checks basic stats webpage functionality
- BUG/MEDIUM: stats: Get the right scope pointer depending on HTX is used or not
- BUG: 51d: Changes to the buffer API in 1.9 were not applied to the 51Degrees code.
- MEDIUM: mux-h2: emit HEADERS frames when facing HTX trailers blocks
- BUG/MEDIUM: h1: Get the h1m state when restarting the headers parsing
- MINOR: h1: make the H1 headers block parser able to parse headers only
- MINOR: mux-h2: make HTX_BLK_EOM processing idempotent
- MEDIUM: mux-h2: pass trailers to HTX
- MINOR: h2: add h2_make_htx_trailers to turn H2 headers to HTX trailers
- MINOR: htx: add a new function to add a block without filling it
- MEDIUM: mux-h2: pass trailers to H1 (legacy mode)
- MINOR: h2: add h2_make_h1_trailers to turn H2 headers to H1 trailers
- BUG/MEDIUM: mux-h2: decode trailers in HEADERS frames
- MINOR: mux-h2: set H2_SF_HEADERS_RCVD when a HEADERS frame was decoded
- MINOR: mux-h2: check for too many streams only for idle streams
- BUG/MINOR: mux-h2: detect when the HTX EOM block cannot be added after headers
- MEDIUM: mux-h2: make h2c_decode_headers() support recoverable errors
- MINOR: mux-h2: add a new dummy stream : h2_error_stream
- MINOR: mux-h2: make h2c_decode_headers() return a status, not a count
- BUG/MINOR: mux-h2: only update rxbuf's length for H1 headers
- BUG/MINOR: mux-h2: mark end-of-stream after processing response HEADERS, not before
- BUG/MINOR: mux-h2: set the stream-full flag when leaving h2c_decode_headers()
- MEDIUM: mux-h2: handle decoding of CONTINUATION frames
- MINOR: mux-h2: make h2_peek_frame_hdr() support an offset
- MINOR: buffers: add a new b_move() function
- MINOR: mux-h2: fail stream creation more cleanly using RST_STREAM
- MINOR: mux-h2: add a new dummy stream for the REFUSED_STREAM error code
- MINOR: mux-h2: make h2c_send_rst_stream() use the dummy stream's error code
- MEDIUM: mux-h2: decode HEADERS frames before allocating the stream
- MINOR: mux-h2: remove useless check for empty frame length in h2s_decode_headers()
- MEDIUM: mux-h2: remove padlen during headers phase
- MINOR: h2: add a bit-based frame type representation
- MINOR: spoe: Make the SPOE filter compatible with HTX proxies
- BUG/MINOR: stick_table: Prevent conn_cur from underflowing
- BUILD/MEDIUM: da: Necessary code changes for new buffer API.
- REGTEST: Adapt reg test doc files to vtest.
- REGTEST: Switch to vtest.
- DOC: REGTESTS README varnishtest -Dno-htx= define.
- REGTESTS: Basic tests for using maps to redirect requests / select backend
- REGTESTS: Basic tests for concat,strcmp,word,field,ipmask converters
- REGTESTS: test case for map_regm commit 271022150d
- REGTEST: filters: add compression test
- REGTEST: "capture (request|response)" regtest.
- BUG/MINOR: backend: BE_LB_LKUP_CHTREE is a value, not a bit
- BUG/MINOR: backend: balance uri specific options were lost across defaults
- BUG/MINOR: backend: don't use url_param_name as a hint for BE_LB_ALGO_PH
- DOC: Be a bit more explicit about allow-0rtt security implications.
- BUG/MEDIUM: ssl: Disable anti-replay protection and set max data with 0RTT.
- BUG/MINOR: lua/htx: Respect the reserve when data are send from an HTX applet
- BUG/MEDIUM: checks: Avoid having an associated server for email checks.
- MINOR: checks: Store the proxy in checks.
- BUG/MEDIUM: connection: properly unregister the mux on failed initialization
- BUG/MEDIUM: init: Initialize idle_orphan_conns for first server in server-template
- MEDIUM: sessions: Keep track of which connections are idle.
- BUG/MEDIUM: h1: Make sure we destroy an inactive connectin that did shutw.
- BUG/MAJOR: cache: fix confusion between zero and uninitialized cache key
- MINOR: ssl: add support of aes256 bits ticket keys on file and cli.
- BUG/MEDIUM: ssl: missing allocation failure checks loading tls key file
- BUG/MINOR: base64: dec func ignores padding for output size checking
- MINOR: hapee/modules: add a new label MODULES_LOCK to the lock_label enum
- MINOR: hapee/modules: add the ability to register variable and functions.
- MEDIUM: hapee/modules: 'modules list' on the cli shows currently loaded modules
- MINOR: hapee/modules: terminate properly loaded modules if possible
- MINOR: hapee/modules: register function called after the main config check
- MEDIUM: hapee/modules: add memory reservation support for the modules
- BUILD: hapee/modules: update HAPEE version macro to 1.9r1
- BUILD: hapee/modules: add macros to compute numerical value of a HAPEE version
- BUILD: hapee/modules: add version of the module in the defines
- MEDIUM: hapee/modules: add modules support
HAPEE-LB 1.9r1 – Changelog