v3.4-dev5
📦 haproxyView on GitHub →
✨ 28 features🐛 39 fixes🔧 75 symbols
Summary
This release introduces dynamic backend creation and enhances task profiling with fine-grained settings. It also includes numerous bug fixes across various modules like QUIC, SSL, and DeviceAtlas, alongside improvements in buffer management and HTX processing.
Migration Steps
- Check default proxy compatibility on "add backend" handler.
✨ New Features
- Implement dynamic backend creation.
- Add function to check support for dynamic servers.
- Define "add backend" handler.
- Parse mode on dynamic backend creation.
- Parse guid on dynamic backend creation.
- Check default proxy compatibility on "add backend".
- Assign dynamic proxy ID.
- Support setting/clearing lock/memory watching for task profiling.
- Apply and use new finegrained task profiling settings.
- Allow to switch per-task lock/memory profiling at runtime.
- Add the SSL lib verify directory in haproxy -vv.
- Convert an RSA JWK into an EVP_PKEY.
- Add new jwt_decrypt_jwk converter.
- Add HAVE_WORKING_TCP_MD5SIG in haproxy -vv.
- Sort the feature list in haproxy -vv.
- Show the list of detected features at runtime with haproxy -vv.
- Rework RESUME_FILTER_* macros as inline functions.
- Rework filter iteration for channel related callback functions.
- Use per-channel filter list when relevant.
- Add a utility to find the post-mortem address from a core.
- Use unsigned longs to display pools memory usage.
- Make "balance random" consider tg local req rate when loads are equal.
- Add BUG_ON_STRESS() when draining data on closed stream.
- Add an option to limit the amount of data forwarded.
- Add a pool for large buffers with a configurable size.
- Add support for large chunks.
- Offer buffers of default size only.
- Get large chunk if necessary to perform a defrag.
🐛 Bug Fixes
- Initialize maxthrpertgroup earlier.
- Differ checking the max threads per group number.
- Fix allocation error message of progname string.
- Handle a possible strdup() failure.
- Fix clang build error on "add backend" handler.
- Fix null dereference in "add backend" handler.
- Fix default ALPN bind settings.
- Always properly initialize lb_nodes with dynamic servers.
- SSL_CERT_DIR environment variable doesn't affect haproxy.
- Ensure handshake speed up is only run once per conn.
- Reject invalid token.
- Fix parsing frame type.
- Missing '\n' in error message.
- Add missing return on error in config parsers.
- Add NULL checks on strdup() results in config parsers.
- Fix resource leaks on init error paths.
- Fix off-by-one in da_haproxy_conv().
- Fix cookie vlen using wrong length after extraction.
- Fix double-checked locking race in checkinst.
- Fix resource leak on hot-reload compile failure.
- Fix deinit to only finalize when initialized.
- Set cache_size on hot-reloaded atlas instance.
- Lack crtlist_dup_ssl_conf() declaration.
- Double-free on error path w/ ssl-f-use parser.
- Fix leak in ssl-f-use parser upon error.
- Clarify ssl-f-use errors in post-section parsing.
- Error with ssl-f-use when no "crt".
- Revert "MEDIUM: mux-quic: add BUG_ON if sending on locally closed QCS".
- Reject frontend CONNECT as currently not implemented.
- Stop sending via fast-forward if stream is closed.
- Stop sending vi fast-forward for unexpected states.
- Fix test on shut flags for legacy applets (v2).
- Fix hanshake events decoding.
- Properly compute length of the first DATA block.
- Use the next block when data exactly filled a block.
- Stop to wait for body on client error/abort.
- Fix timing side-channel and dead code in JWE decryption.
- Check buffer pool creation for failures.
- SSL backend sessions used after free.
Affected Symbols
mworker V3maxthrpertgroupprogname stringstrdup()defaults proxiesproxy inheritancedynamic serversadd backend handlerdynamic backend creationdynamic proxy IDip.fp outputlb_nodeschash's deinit()run_poll_loop()task profilingSSL lib verify directorySSL_CERT_DIR environment variableINITCALL{0,1} macrosstruct pp2_tlv_sslsrv_dynamic_maxconn()process_srv_queue()quic handshake speed upquic tokenquic frame typeRSA JWKEVP_PKEYjwt_decrypt_jwkTCP_MD5SIGRESUME_FILTER_* macroschannel related callback functionsdeviceatlas config parsersda_haproxy_conv()da_haproxy_conv() cookie vlencheckinsthot-reload compile failureatlas instance cache_sizecrtlist_dup_ssl_conf()ssl-f-use parserbalance randommux-quicfrontend CONNECTmux-h2/quic streammux-h1 unexpected stateslegacy applets (v2)term-events handshake eventsflt-trace DATA blockshctx blockshttp-ana bodysc_strm.hJWE decryptionbuffer sizebuffers of same sizebuffer pool creationcache messages payloadsynchronous send per stream wakeupcompress more than a chunk0-copy for buffers of different sizeh1-htx buffersbuffers of default sizehtx blockshtx defragmentationHTX messagesunaligned HTX messageHTX DATA blocklarge bufferslarge chunkslarge buffers during a receivechunks with a size dependent on input datalarge chunks when necessarylarge chunk for defraglarge buffer for bodydefault or large bufferHTTP with large bufsizeSSL backend sessionsvtest2 URL