Summary
2025/02/19 : 3.1r1 (1.0.0-345.233)
- DOC: option redispatch should mention persist options
- BUG/MINOR: stats-json: Define JSON_INT_MAX as a signed integer
- BUG/MINOR: flt-trace: Support only one name option
- BUG/MINOR: auth: Fix a leak on error path when parsing user's groups
- BUG/MINOR: config/userlist: Support one 'users' option for 'group' directive
- BUG/MINOR: cli: Fix a possible infinite loop in _getsocks()
- BUG/MINOR: cli: Fix memory leak on error for _getsocks command
- BUG/MINOR: cli: Don't set SE flags from the cli applet
- MINOR: mux-spop: Set SPOP_CF_ERROR flag on connection error only
- MINOR: mux-spop: Report EOI on the SE when a ACK is received for a stream
- MINOR: flt-spoe: Report end of input immediately after applet init
- BUG/MEDIUM: flt-spoe: Properly handle end of stream from the SPOE applet
- BUG/MEDIUM: applet: Don't pretend to have more data to handle EOI/EOS/ERROR
- BUG/MEDIUM: flt-spoe: Set/test applet flags instead of SE flags from I/O handler
- BUG/MINOR: http-check: Don't pretend a C-L heeader is set before adding it
- BUG/MINOR: tcp-rules: Don't forward close during tcp-response content rules eval
- BUG/MEDIUM: mux-fcgi: Properly handle read0 on partial records
- DOC: htx: clarify <mark> parameter for htx_xfer_blks()
- BUG/MEDIUM: htx: wrong count computation in htx_xfer_blks()
- MEDIUM: epoll: skip reports of stale file descriptors
- DEBUG: epoll: store and compare the FD's generation count with reported event
- MINOR: fd: add a generation number to file descriptors
- DEBUG: fd: add a counter of takeovers of an FD since it was last opened
- BUG/MEDIUM: chunk: make sure to flush the trash pool before resizing
- MINOR: quic: adapt credit based pacing to BBR
- MINOR: quic: remove unused pacing burst in bind_conf/quic_cc_path
- MEDIUM: quic: use dynamic credit for pacing
- MEDIUM: mux-quic: reduce pacing CPU usage with passive wait
- MEDIUM: quic: implement credit based pacing
- MINOR: mux-quic: increment pacing retry counter on expired
- MINOR: quic: rename pacing_rate cb to pacing_inter
- BUG/MINOR: stktable: invalid use of stkctr_set_entry() with mixed table types
- BUG/MINOR: mux-h2: Properly handle full or truncated HTX messages on shut
- REGTESTS: Fix truncated.vtc to send 0-CRLF
- BUG/MINOR: mux-quic: prevent crash after MUX init failure
- BUG/MINOR: quic: prevent crash on conn access after MUX init failure
- BUG/MINOR: fcgi: Don't set the status to 302 if it is already set
- BUG/MEDIUM: filters: Handle filters registered on data with no payload callback
- BUG/MINOR: cli: Wait for the last ACK when FDs are xferred from the old worker
- BUG/MEDIUM: cli: Be sure to drop all input data in END state
- BUG/MINOR: ssl/cli: "show ssl crt-list" lacks sigals
- BUG/MINOR: ssl/cli: "show ssl crt-list" lacks client-sigals
- BUG/MEDIUM: fd: mark FD transferred to another process as FD_CLONED
- BUG/MINOR: mworker: post_section_parser for the last section in discovery
- BUG/MINOR: mworker: section ignored in discovery after a post_section_parser
- BUG/MINOR: quic: fix CRYPTO payload size calcul for encoding
- BUG/MINOR: quic: reserve length field for long header encoding
- BUG/MEDIUM: debug: close a possible race between thread dump and panic()
- BUG/MEDIUM: ssl: chosing correct certificate using RSA-PSS with TLSv1.3
- BUILD: ssl: more cleaner approach to WolfSSL without renegotiation
- BUILD: ssl: allow to build without the renegotiation API of WolfSSL
- HAPEE: ssl: enable USE_ENGINE automatically when OpenSSL < 3.0
- BUG/MINOR: startup: hap_register_feature() fix for partial feature name
- MINOR: startup: allow hap_register_feature() to enable a feature in the list
- MINOR: hapee/WURFL: transfer error status from the _wurfl_reload() function
- 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
- MINOR: hapee/da: alert in case of incorrect data version
- BUG/MINOR: hapee/da: enabling use of precompiled json database in 'deviceatlas-json-file'
- BUG/MINOR: hapee/da: fixed bug when using binary version of database
- BUG/BUILD: hapee/da: added preprocessed source code generation for *.cpp files
- 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
- MEDIUM: hapee/da: Revert "MEDIUM: da: update module to handle schedule mode."
- MEDIUM: hapee/51d: support data reload for 51Degrees V4 engine
- MINOR: hapee/51d: add function that returns path to 51Degrees data file
- MINOR: hapee/51d: add function that allow data reload
- BUG/MINOR: hapee/51d: add spin locking
- BUILD: hapee/51d: fix error when building with 51Degrees enabled
- BUG/MEDIUM: hapee/51d: fix a segfault on exit when 51d configuration is not loaded
- MEDIUM: hapee/51d: use fiftyoneDegreesProvider to access the pool and dataset
- MINOR: hapee: Update backports list
- MINOR: epoll: permit to mask certain specific events
- CLEANUP: quic: remove unused prototype
- BUG/MINOR: stream: Properly handle "on-marked-up shutdown-backup-sessions"
- BUG/MINOR: ssl: put ssl_sock_load_ca under SSL_NO_GENERATE_CERTIFICATES
- BUG/MINOR: quic: do not increase congestion window if app limited
- BUG/MEDIUM: mux-h1: Properly close H1C if an error is reported before sending data
- BUILD: quic: Move an ASSUME_NONNULL() for variable which is not null
- MINOR: quic: Add a BUG_ON() on quic_tx_packet refcount
- BUG/MINOR: quic: ensure a detached coalesced packet can't access its neighbours
- BUG/MINOR: init: set HAPROXY_STARTUP_VERSION from the variable, not the macro
- BUG/MAJOR: log/sink: possible sink collision in sink_new_from_srv()
- BUG/MAJOR: quic: reject too large CRYPTO frames
- BUG/MEDIUM: promex: Use right context pointers to dump backends extra-counters
- BUG/MEDIUM: stktable: fix missing lock on some table converters
- BUG/MINOR: quic: reject NEW_TOKEN frames from clients
- BUG/MINOR: stktable: fix big-endian compatiblity in smp_to_stkey()
- BUG/MEDIUM: hapee/modules: fix invalid pool_free() in stream_new()
- BUILD: hapee: ERR=1 broken with cfgcond.c
- MINOR: hapee: add a .hapee directory to list backporting notes
- BUG/MEDIUM: h1-htx: Properly handle bodyless messages
- BUG/MEDIUM: promex/resolvers: Don't dump metrics if no nameserver is defined
- BUG/MINOR: mux-quic: handle closure of uni-stream
- MINOR: mux-quic: change return value of qcs_attach_sc()
- MINOR: mux-quic: add traces on sd attach
- BUG/MINOR: mux-quic: fix wakeup on qcc_set_error()
- MINOR: config: Alert about extra arguments for errorfile and errorloc
- BUG/MINOR: log: Allow to use if/unless conditionnals for do-log action
- BUG/MEDIUM: mux-quic: do not attach on already closed stream
- BUG/MAJOR: mux-quic: properly fix BUG_ON on empty STREAM emission
- Revert "BUG/MAJOR: mux-quic: fix BUG_ON on empty STREAM emission"
- BUG/MEDIUM: mux-h2: Count copied data when looping on RX bufs in h2_rcv_buf()
- BUG/MAJOR: mux-quic: fix BUG_ON on empty STREAM emission
- DOC: config: add missing "track-sc0" in action keywords matrix
- BUG/MINOR: stats: fix segfault caused by uninitialized value in "show schema json"
- BUG/MEDIUM: queue: Make process_srv_queue return the number of streams
- MINOR: hlua: rename "tune.lua.preserve-smp-bool" to "tune.lua.bool-sample-conversion"
- BUG/MINOR: h2/rhttp: fix HTTP2 conn counters on reverse
- CLEANUP: mux-quic: remove dead err label in qcc_build_frms()
- BUG/MEDIUM: mux-quic: prevent BUG_ON() by refreshing frms on MAX_DATA
- REGTESTS: fix lua-based regtests using tune.lua.smp-preserve-bool
- MINOR: hlua: add option to preserve bool type from smp to lua
- DOC: config: add "tune.lua.burst-timeout" to the list of global parameters
- DOC: config: reorder "tune.lua.*" keywords by alphabetical order
- DOC: config: add example for server "track" keyword
- MINOR: mux-quic: hide traces when woken up on pacing only
- MINOR: trace: implement tracing disabling API
- MEDIUM: mux-quic: remove pacing specific code on qcc_io_cb
- MEDIUM/OPTIM: mux-quic: do not rebuild frms list on every send
- MINOR: mux-quic: split STREAM and RS/SS emission
- MINOR: mux-quic: extract code to build STREAM frames list
- MEDIUM/OPTIM: mux-quic: implement purg_list
- MEDIUM/OPTIM: mux-quic: define a recv_list for demux resumption
- MINOR: mux-quic: refactor wait-for-handshake support
- MINOR: quic: add traces
- CLEANUP: mux-quic: remove unused qcc member send_retry_list
- BUG/MEDIUM: mux-quic: do not mix qcc_io_send() return codes with pacing
- BUILD: debug: only dump/reset glitch counters when really defined
- BUG/MEDIUM: queues: Do not use pendconn_grab_from_px().
- BUG/MEDIUM: queues: Make sure we call process_srv_queue() when leaving
- BUG/MEDIUM: stconn: Only consider I/O timers to update stream's expiration date
- CLEANUP: quic: Rename some BBR functions in relation with bw probing
- BUG/MINOR: quic: missing Startup accelerating probing bw states
- REGTESTS: ssl: add a PEM with mix of LF and CRLF line endings
- BUG/MINOR: cli: cli_snd_buf: preserve \r\n for payload lines
- BUG/MINOR: quic: too permissive exit condition for high loss detection in Startup (BBR)
- BUG/MINOR: quic: fix the wrong tracked recovery start time value
- CLEANUP: quic: remove a wrong comment about ->app_limited (drs)
- MINOR: quic: reduce the private data size of QUIC cc algos
- BUG/MINOR: quic: reduce packet losses at least during ProbeBW_CRUISE (BBR)
- BUG/MINOR: quic: underflow issue for bbr_inflight_hi_from_lost_packet()
- BUG/MINOR: quic: remove max_bw filter from delivery rate sampling
- BUG/MINOR: quic: wrong bbr_target_inflight() implementation
- BUG/MINOR: quic: fix BBB max bandwidth oscillation issue.
- BUG/MINOR: quic: wrong logical statement in in_recovery_period() (BBR)
- MINOR: window_filter: rely on the time to update the filter samples (QUIC/BBR)
- MINOR: hapee: add the module() predicate
- MINOR: ssl/cli: add -A to the 'show ssl sni' command description
- MINOR: ssl/cli: allow to filter expired certificates with 'show ssl sni'
- MINOR: ssl: add utils functions to extract X509 notAfter date
- MINOR: ssl/cli: add negative filters to "show ssl sni"
- CLEANUP: ssl: fix comment in 'show ssl sni'
- DOC: management: fix typos and paragraph ordering in 'show ssl sni'
- MEDIUM: ssl/cli: "show ssl sni" list the loaded SNI in frontends
- MINOR: ssl: add notBefore and notAfter utility functions
- BUG/MINOR: hlua_fcn: restore server pairs iterator pointer consistency
- BUG/MINOR: server-state: Fix expiration date of srvrq_check tasks
- BUG/MINOR: http-fetch: Ignore empty argument string for query()
- BUG/MEDIUM: stats/server: use watcher to track server during stats dump
- MINOR: list: define a watcher type
- BUG/MINOR: stats: decrement srv refcount on stats-file release
- BUG/MINOR: resolvers: handle a possible strdup() failure
- BUG/MINOR: ssl_crtlist: handle a possible strdup() failure
- BUG/MINOR: namespace: handle a possible strdup() failure
- BUG/MEDIUM: mworker: report status, if daemonized master fails
- BUG/MEDIUM: startup: report status if daemonized process fails
- BUG/MEDIUM: startup: don't daemonize if started with -c
- BUG/MINOR: startup: fix error path for master, if can't open pidfile
- BUG/MINOR: mworker: fix -D -W -sf/-st modes
- BUG/MINOR: mworker: don't save program PIDs in oldpids
- BUG/MINOR: mux-h2: fix expression when detecting excess of CONTINUATION frames
- MINOR: mux-h2/glitches: add a description to the H2 glitches
- CLEANUP: mux-h2/traces: reword certain ambiguous traces
- MINOR: mux-h2/traces: add a missing trace on negative initial window size
- BUILD: debug: fix build issues in COUNT_IF() with -Wunused-value
- BUG/MINOR: debug: COUNT_IF() should return true/false
- DOC: config: fix confusing init-state examples
- BUG/MINOR: config: Fix parsing of accept-invalid-http-{request,response}
- BUG/MEDIUM: mux-h2: make sure not to touch dummy streams when sending WU
- BUG/MINOR: quic: remove startup alert if GSO unsupported
- BUG/MINOR: quic: remove startup alert if conn socket-owner unsupported
- BUG/MEDIUM: mux-quic: remove pacing status when everything is sent
- BUG/MINOR: init: do not call fork_poller() for non-forked processes
- BUG/MEDIUM: init: make sure only daemonized processes change their session
- BUG/MINOR: quic: fix bbr_inflight() calls with wrong gain value
- BUG/MINOR: startup: fix pidfile creation
- BUG/MINOR: startup: close pidfd and free global.pidfile in handle_pidfile()
- BUG/MINOR: signal: register default handler for SIGINT in signal_init()
- BUILD: quic: fix a build error about an non initialized timestamp
- BUG/MINOR: h1-htx: Use default reason if not set when formatting the response
- BUG/MEDIUM: http-ana: Reset request flag about data sent to perform a L7 retry
- BUG/MEDIUM: quic: prevent stream freeze on pacing
- BUG/MEDIUM: event_hdl: fix uninitialized value in async mode when no data is provided
- BUG/MINOR: improve BBR throughput on very fast links
- BUG/MINOR: log: fix lf_text() behavior with empty string
- MINOR: proxy: Add support of 421-Misdirected-Request in retry-on status
- BUG/MEDIUM: sock: Remove FD_POLL_HUP during connect() if FD_POLL_ERR is not set
- MINOR: hapee/modules: report the per-stream allocated size for each module
- BUG/MEDIUM: hapee: prevent the module file name being overwritten
- MEDIUM: hapee: HAPEE_MODULE_DECLARE() allows to declare an HAPEE module
- BUG/MINOR: hapee: Makefile: bad substitution for MODVERSION variable
- BUG/MINOR: hapee: relax __vers symbol check
- BUG/MINOR: hapee/modules: can't load modules with USE_OBSOLETE_LINKER
- BUG/MINOR: hapee: remove leading \n on __vers error
- MEDIUM: hapee: warn on unsupported initcalls
- BUG/MINOR: hapee: forbid to load a module twice
- HAPEE: udp: update structs and functions required for the UDP module
- HAPEE: makefile: automatically build objects in addons/hapee_*
- HAPEE: makefile: update the cleanup rule to also remove *.i from addons
- HAPEE: addons: quic CID in -vv
- HAPEE: addons: adds quic CID generator to interop with packetshield
- MEDIUM: hapee: does not pass OPTION_LDFLAGS to modules
- MINOR: hapee/modules: check if we generate the API hash correctly
- BUG/MINOR: hapee/modules: adjust include match() in gen-modules-config-h.awk
- BUG/MINOR: hapee/modules: initialize the module head list
- BUILD: hapee/modules: select either md5 or md5sum
- MEDIUM: hapee/modules: load the STG_REGISTER initcalls
- BUG/MINOR: hapee/modules: display detailed error message on mod_init() failure
- 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
- MEDIUM: hapee/modules: add memory reservation support for the modules
- MINOR: hapee: change URLs for 3.1r1
- BUILD: hapee/modules: update HAPEE version macro to 3.1r1
- 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 3.1r1 – Changelog