version 1.9r1

2020/01/28 : 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
English French German