Micro release updates for jammy, noble, and plucky
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| haproxy (Ubuntu) |
Fix Released
|
Wishlist
|
Athos Ribeiro | ||
| Jammy |
Fix Released
|
Undecided
|
Athos Ribeiro | ||
| Noble |
Fix Released
|
Undecided
|
Athos Ribeiro | ||
| Plucky |
Fix Released
|
Undecided
|
Athos Ribeiro | ||
Bug Description
This bug tracks an update for the HAProxy package in the following Ubuntu
releases to the versions below:
* plucky (25.04): HAProxy 3.0.10 (See entries from 3.0.9 to 3.0.10).
* noble (24.04): HAProxy 2.8.15 (See entries from 2.8.6 to 2.8.15).
* jammy (22.04): HAProxy 2.4.29 (See entries from 2.4.15 to 2.4.29).
These updates include bugfixes only following the SRU policy exception defined
at https:/
DISCLAIMER: For these updates, we are not upgrading to the latest patch version possible. Instead, we are sticking to the versions which include the fixes up to the version we currently ship in questing to avoid upgrade path regressions.
[Upstream changes]
HAProxy 3.0.10: https:/
HAProxy 2.8.15: https:/
HAProxy 2.4.29: https:/
Important bug fixes include:
* noble (24.04) - HAProxy 2.8.15:
- BUG/MAJOR: ssl_sock: Always clear retry flags in read/write functions
- BUG/MAJOR: hlua: improper lock usage with hlua_ctx_resume()
- BUG/MAJOR: server: fix stream crash due to deleted server
- BUG/MAJOR: promex: fix crash on deleted server
- BUG/MAJOR: connection: fix server used_conns with H2 + reuse safe
- BUG/MAJOR: server: do not delete srv referenced by session
- BUG/MAJOR: mux-h1: Wake SC to perform 0-copy forwarding in CLOSING state
- BUG/MAJOR: quic: reject too large CRYPTO frames
- BUG/MAJOR: ocsp: Separate refcount per instance and per store
- BUG/MAJOR: quic: fix wrong packet building due to already acked frames
* jammy (22.04) - HAProxy 2.4.29:
- BUG/MAJOR: server: do not delete srv referenced by session
- BUG/MAJOR: hlua: improper lock usage with hlua_ctx_resume()
- BUG/MAJOR: mux-h2: Report a protocol error for any DATA frame before headers
- BUG/MAJOR: mux-pt: Always destroy the backend connection on detach
- BUG/MAJOR: connection: fix server used_conns with H2 + reuse safe
[Test Plan]
Since the upstream CI piplines do not run (publicly) for HAProxy 2.4, 2.8, and 3.0, we triggered those using the upstream project github workflows:
HAproxy 2.4.29 (jammy): https:/
HAproxy 2.8.15 (noble): https:/
HAproxy 3.0.10 (plucky): https:/
The windows related workflows are failing, but this should not be relevant here. For 2.4 and 2.8, the macOS tests in the vtest workflow are also failing. These should not be relevant here either.
There is an error in the spec compliance run for the 2.4 actions. However, we can see in the actions matrix that upstream did add a "-Wno-deprecate
The vtest workflow was failing for 2.8 and 3.0. The workflow is configure to run on ubuntu-latest and depend on libpcre2. I replaced the dependency to libpcre3 and the tests pass.
Some of the spelling checks are also failing, which should not be relevant here.
A test build set is available at https:/
* Results:
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for amd64 @ 11.10.25 01:21:25 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for arm64 @ 11.10.25 01:21:38 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for armhf @ 11.10.25 01:24:48 Log️ 🗒️
- haproxy: jammy/haproxy/
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for ppc64el @ 11.10.25 01:21:58 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for s390x @ 11.10.25 01:20:56 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for amd64 @ 11.10.25 01:20:32 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for arm64 @ 11.10.25 01:21:27 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for armhf @ 11.10.25 01:23:59 Log️ 🗒️
- haproxy: noble/haproxy/
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for ppc64el @ 11.10.25 01:21:23 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for s390x @ 11.10.25 01:20:38 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for amd64 @ 11.10.25 01:20:26 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for arm64 @ 11.10.25 01:22:09 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for armhf @ 11.10.25 01:23:55 Log️ 🗒️
- haproxy: plucky/
- haproxy: plucky/
+ ✅ haproxy on plucky for ppc64el @ 11.10.25 01:21:43 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for s390x @ 11.10.25 01:20:36 Log️ 🗒️
[Regression Potential]
HAProxy itself does not have many reverse dependencies, however, any upgrade is
a risk to introduce some breakage to other packages. Whenever a test failure is
detected, we will be on top of it and make sure it doesn't affect existing
users.
[Regression Potential - Changes Analysis (CA)]
There is a significant number of low regression risk (as per upstream classification) functional changes.
Moreover, some (fewer) bug fixes have a possible medium regression risk (again, as per upstream classification).
The functional changes mentioned above were included because they are, in majority, needed by other entries which are bug fixes, i.e., these are functional changes needed to fix specific bugs.
[Regression Potential - CA - Upstream changes classification criteria]
https:/
describes the upstream guidelines for tagging the entries in the upstream changelog based
on their purpose, importance, severity, etc.
Below, I summarize the relevant bits of such guidelines.
Patches "fixing a bug must have the 'BUG' tag", e.g., "BUG/MAJOR: description"
"When the patch cannot be categorized, [...] only use a risk or complexity
information [...]. This is commonly the case for new features". For
instance, "MINOR: description"
For MINOR tags, the patch "is safe enough to be backported to stable
branches".
Patches tagged MEDIUM "may cause unexpected regressions of low importance
[...], the patch is safe but touches working areas".
Patches tagged MAJOR carry a "major risk of hidden regression". No changes are tagged MAJOR without a bug classifier, i.e., all of the patches classified as MAJOR are BUG/MAJOR and will be discussed below.
There is also a CRITICAL tag but no changes are tagged with it in the new
candidate versions.
[Regression Potential - CA - Impact]
For the next Jammy update, we would upgrade HAPRoxy from 2.4.14 to 2.4.29. Among
the changes, there are 5 bug fixes tagged as BUG/MAJOR and 15 uncategorized changes (potentially functional), where 13 are tagged as MINOR and 2 are tagged as MEDIUM.
For the next Noble update, we would upgrade HAPRoxy from 2.8.5 to 2.8.15. This has the largest impactful change set for these proposed HAProxy upgrades. Among the changes, there are 12 bug fixes tagged as BUG/MAJOR and 80 uncategorized changes (potentially functional), where 74 are tagged as MINOR and 6 are tagged as MEDIUM.
For the next Plucky update, we would upgrade HAPRoxy from 3.0.8 to 3.0.10. Among the changes, there are 21 uncategorized changes (potentially functional), where 20 are tagged as MINOR and 1 is tagged as MEDIUM.
[Regression Potential - CA - Assessment]
Below we discuss the changes with the greater regression potential (and the most relevant uncategorized ones, which may contain functional changes)
All uncategorized MINOR changes are either adding new internal functions used by other bug fixes, or other internal changes where regressions are not expected. Hence, they will not be discussed.
Unless they are discussed below changes tagged BUG/MAJOR had the MAJOR tag chosen due to the severity of the bugs and not due to the regression potential (and that is why they are not being discussed).
Plucky (25.04): HAProxy 3.0.10:
- MEDIUM: epoll: skip reports of stale file descriptors
This was an internal change to make the poller stop reporting events for wrong file descriptions.
Noble (24.04): HAProxy 2.8.15:
- BUG/MAJOR: ssl_sock: Always clear retry flags in read/write functions
This was done to mimic the behavior of the OpenSSL socket BIO
- MEDIUM: mux-h2: allow to set the glitches threshold to kill a connection
This introduces two new configuration keywords
tune.
tune.
to set a glitch threshold to eliminate bad behaving clients. The default value is set to zero, meaning no threshold is set, i.e., there is no change of behavior by default.
- MEDIUM: debug: on panic, make the target thread automatically allocate its buf
This is an improvement on how threads states are kept upon panic to improve debugging. This is a functional change, but helpful for debugging and only triggered upon panic.
- MEDIUM: h1: Accept invalid T-E values with accept-
For HTTP/1, accept invalid entries for chuncked Transfer-Encoding values when the accept-
- MEDIUM: ssl: initialize the SSL stack explicitly
The SSL stack will always be fully, explicitly initialized. This was needed to fix issues with FIPS enabled servers.
- MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD (take #2)
This sets a default value for fd_hard_limit in case it is not set in the configuration to a reasonable vaule of 1048576. This is done to avoid having the process killed by its watchdog on systems where the limit is too high. The fd_hard_limit configuration has precedence over the new default value. Hence, any issues for special cases where it needs to be larger than the new default value, can be fixed by setting a value for fd_hard_limit.
- MEDIUM: config: prevent communication with privileged ports
Introduces a new configuration harden.
Jammy (22.04): HAProxy 2.4.29:
- MEDIUM: mux-h1: Handle MUX_SUBS_RECV flag in h1_ctl() and susbscribe for reads
This internal change is needed to fix a bug to properly handle abortonclose when it is set on backend only. This was functional, non-buggy code being touched and thus the MEDIUM tag.
- MEDIUM: ssl: initialize the SSL stack explicitly
The SSL stack will always be fully, explicitly initialized. This was needed to fix issues with FIPS enabled servers.
[Appendix A - Upstream potentially breaking changes list]
Below you will find the list of changes I extracted from the full changelogs of
the new candidate versions. I filtered the changelogs with the following command:
$ cat $CHANGELOG_FILE | grep -E '^[^ ]|(- )?(MAJOR|CRIT)|- (MINOR|MEDIUM)'
This selected only the unclassified (not bug fixing) changes and the bug fixing
changes classified as BUG/MAJOR or BUG/CRITICAL.
Plucky:
2025/04/22 : 3.0.10
- MINOR: log: support "raw" logformat node typecast
- MINOR: task: add thread safe notification_new and notification_wake variants
- MINOR: fd: add a generation number to file descriptors
- MINOR: epoll: permit to mask certain specific events
- MEDIUM: epoll: skip reports of stale file descriptors
- MINOR: tools: also protect the library name resolution against concurrent accesses
2025/03/20 : 3.0.9
- MINOR: mux-quic: change return value of qcs_attach_sc()
- MINOR: startup: adjust alert messages, when capabilities are missed
- MINOR: clock: always use atomic ops for global_now_ms
- MINOR: tinfo: add a new thread flag to indicate a call from a sig handler
- MINOR: freq_ctr: provide non-blocking read functions
- MINOR: cfgparse/peers: provide more info when ignoring invalid "peer" or "server" lines
- MINOR: compiler: add a simple macro to concatenate resolved strings
- MINOR: compiler: add a new __decl_thread_var() macro to declare local variables
- MINOR: tools: resolve main() only once in resolve_sym_name()
- MINOR: tools: use only opportunistic symbols resolution
- MINOR: tinfo: split the signal handler report flags into 3
- MINOR: cli: export cli_io_handler() to ease symbol resolution
- MINOR: tools: improve symbol resolution without dl_addr
- MINOR: tools: ease the declaration of known symbols in resolve_sym_name()
- MINOR: tools: teach resolve_sym_name() a few more common symbols
Noble:
2025/04/22 : 2.8.15
- MINOR: mux-quic: change return value of qcs_attach_sc()
- MINOR: clock: always use atomic ops for global_now_ms
- MINOR: tinfo: add a new thread flag to indicate a call from a sig handler
- MINOR: cfgparse/peers: provide more info when ignoring invalid "peer" or "server" lines
- MINOR: compiler: add a simple macro to concatenate resolved strings
- MINOR: compiler: add a new __decl_thread_var() macro to declare local variables
- MINOR: tools: resolve main() only once in resolve_sym_name()
- MINOR: tools: use only opportunistic symbols resolution
- MINOR: cli: export cli_io_handler() to ease symbol resolution
- MINOR: tools: improve symbol resolution without dl_addr
- MINOR: tools: ease the declaration of known symbols in resolve_sym_name()
- MINOR: tools: teach resolve_sym_name() a few more common symbols
- MINOR: task: add thread safe notification_new and notification_wake variants
- MINOR: tools: also protect the library name resolution against concurrent accesses
2025/01/29 : 2.8.14
- MINOR: debug: make mark_tainted() return the previous value
- MINOR: chunk: drop the global thread_dump_buffer
- MINOR: debug: split ha_thread_dump() in two parts
- MINOR: debug: slightly change the thread_dump_pointer signification
- MINOR: debug: make ha_thread_
- MINOR: debug: replace ha_thread_dump() with its two components
- MEDIUM: debug: on panic, make the target thread automatically allocate its buf
- MINOR: quic: notify connection layer on handshake completion
- MINOR: quic: simplify qc_parse_pkt_frms() return path
- MINOR: quic: use dynamically allocated frame on parsing
- MINOR: quic: extend return value of CRYPTO parsing
- MINOR: config: Alert about extra arguments for errorfile and errorloc
- BUG/MAJOR: quic: reject too large CRYPTO frames
- MINOR: quic: Add a BUG_ON() on quic_tx_packet refcount
2024/12/12 : 2.8.13
- MINOR: mux-h1: Set EOI on SE during demux when both side are in DONE state
- MINOR: task: define two new one-shot events for use with WOKEN_OTHER or MSG
- MINOR: activity/
- MINOR: quic: convert qc_stream_desc release field to flags
- MINOR: quic: implement function to check if STREAM is fully acked
- BUG/MAJOR: quic: fix wrong packet building due to already acked frames
2024/11/08 : 2.8.12
- BUG/MAJOR: ocsp: Separate refcount per instance and per store
- MEDIUM: h1: Accept invalid T-E values with accept-
- MINOR: activity/
- MINOR: pools: export the pools variable
- MINOR: cli: remove non-printable characters from 'debug dev fd'
- MINOR: stream: Save last evaluated rule on invalid yield
2024/09/19 : 2.8.11
- MINOR: activity: make the memory profiling hash size configurable at build time
- MEDIUM: ssl: initialize the SSL stack explicitely
- MINOR: queue: add a function to check for TOCTOU after queueing
- MEDIUM: init: set default for fd_hard_limit via DEFAULT_MAXFD (take #2)
- MINOR: channel: implement ci_insert() function
- BUG/MAJOR: mux-h1: Wake SC to perform 0-copy forwarding in CLOSING state
2024/06/14 : 2.8.10
- MINOR: net_helper: Add support for floats/doubles.
- MINOR: log: add dup_logsrv() helper function
- BUG/MAJOR: quic: Crash with TLS_AES_
- MEDIUM: config: prevent communication with privileged ports
- MINOR: session: rename private conns elements
- BUG/MAJOR: server: do not delete srv referenced by session
- BUG/MAJOR: connection: fix server used_conns with H2 + reuse safe
2024/04/05 : 2.8.9
2024/04/05 : 2.8.8
- MINOR: mux-h2: add a counter of "glitches" on a connection
- MINOR: mux-h2: count excess of CONTINUATION frames as a glitch
- MINOR: mux-h2: count late reduction of INITIAL_WINDOW_SIZE as a glitch
- MINOR: mux-h2: always use h2c_report_glitch()
- MEDIUM: mux-h2: allow to set the glitches threshold to kill a connection
- MINOR: connection: add a new mux_ctl to report number of connection glitches
- MINOR: mux-h2: implement MUX_CTL_
- MINOR: connection: add sample fetches to report per-connection glitches
- BUG/MAJOR: promex: fix crash on deleted server
- MINOR: quic: warn on bind on multiple addresses if no IP_PKTINFO support
- BUG/MAJOR: server: fix stream crash due to deleted server
- MINOR: hlua: Be able to disable logging from lua
- BUG/MAJOR: hlua: improper lock usage with hlua_ctx_resume()
- MINOR: hlua: use accessors for stream hlua ctx
- MINOR: server: allow cookie for dynamic servers
- MINOR: cli: Remove useless loop on commands to find unescaped semi-colon
2024/02/26 : 2.8.7
- BUG/MAJOR: ssl/ocsp: crash with ocsp when old process exit or using ocsp CLI
2024/02/15 : 2.8.6
- MINOR: stats: store the parent proxy in stats ctx (http)
- MINOR: h3: check connection error during sending
- MINOR: mux-h2: support limiting the total number of H2 streams per connection
- MINOR: compiler: add a new DO_NOT_FOLD() macro to prevent code folding
- MINOR: debug: make sure calls to ha_crash_now() are never merged
- MINOR: debug: make ABORT_NOW() store the caller's line number when using abort
- MINOR: debug: make BUG_ON() catch build errors even without DEBUG_STRICT
- MINOR: mux-h2/traces: also suggest invalid header upon parsing error
- MINOR: mux-h2/traces: explicitly show the error/refused stream states
- MINOR: mux-h2/traces: clarify the "rejected H2 request" event
- MINOR: mux-h2/traces: add a missing trace on connection WU with negative inc
- BUG/MAJOR: ssl_sock: Always clear retry flags in read/write functions
- MINOR: ssl: Use OCSP_CERTID instead of ckch_store in ckch_store_
- MINOR: quic: Stop hardcoding a scale shifting value (CUBIC_
- MINOR: quic: extract qc_stream_buf free in a dedicated function
- MINOR: h3: add traces for stream sending function
- MINOR: quic: Stop using 1024th of a second.
- MINOR: quic: Update K CUBIC calculation (RFC 9438)
- MINOR: quic: Dynamic packet reordering threshold
- MINOR: quic: Add a counter for reordered packets
- MINOR: errors: ha_alert() and ha_warning() uses warn_exec_path()
- MINOR: ext-check: add an option to preserve environment variables
Jammy:
2025/04/22 : 2.4.29
- MINOR: cli: export cli_io_handler() to ease symbol resolution
2024/11/08 : 2.4.28
- MINOR: session: rename private conns elements
- BUG/MAJOR: server: do not delete srv referenced by session
- MEDIUM: ssl: initialize the SSL stack explicitely
2024/06/18 : 2.4.27
- MINOR: cli: Remove useless loop on commands to find unescaped semi-colon
- MINOR: hlua: don't dump empty entries in hlua_traceback()
- BUG/MAJOR: connection: fix server used_conns with H2 + reuse safe
2024/04/05 : 2.4.26
- BUG/MAJOR: ssl_sock: Always clear retry flags in read/write functions
- MINOR: hlua: Be able to disable logging from lua
- BUG/MAJOR: hlua: improper lock usage with hlua_ctx_resume()
- MINOR: hlua: use accessors for stream hlua ctx
2023/12/14 : 2.4.25
- MINOR: hlua: add hlua_stream_
- MINOR: buf: Add b_force_xfer() function
- BUG/MAJOR: mux-h2: Report a protocol error for any DATA frame before headers
- MINOR: pattern: fix pat_{parse,
- MINOR: connection: Add a CTL flag to notify mux it should wait for reads again
- MEDIUM: mux-h1: Handle MUX_SUBS_RECV flag in h1_ctl() and susbscribe for reads
- MINOR: htx: Use a macro for overhead induced by HTX
- MINOR: channel: Add functions to get info on buffers and deal with HTX streams
- MINOR: stktable: add stktable_deinit function
[Previous updates]
Related branches
- git-ubuntu bot: Approve
- Renan Rodrigo (community): Approve
- Canonical Server packageset reviewers: Pending requested
- Canonical Server Reporter: Pending requested
-
Diff: 9158 lines (+3062/-1230)131 files modified.cirrus.yml (+1/-2)
.github/workflows/codespell.yml (+1/-1)
.github/workflows/compliance.yml (+1/-1)
.github/workflows/contrib.yml (+1/-1)
.github/workflows/coverity.yml (+1/-1)
.github/workflows/cross-zoo.yml (+1/-1)
.github/workflows/openssl-nodeprecated.yml (+2/-3)
.github/workflows/vtest.yml (+6/-10)
.github/workflows/windows.yml (+1/-1)
.travis.yml (+1/-3)
CHANGELOG (+285/-0)
INSTALL (+7/-7)
Makefile (+39/-2)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
addons/promex/service-prometheus.c (+4/-2)
admin/halog/halog.c (+2/-2)
debian/changelog (+15/-0)
debian/patches/series (+0/-1)
dev/null (+0/-51)
doc/51Degrees-device-detection.txt (+1/-1)
doc/configuration.txt (+228/-74)
doc/internals/htx-api.txt (+9/-8)
doc/lua-api/index.rst (+24/-14)
doc/management.txt (+24/-15)
doc/peers-v2.0.txt (+6/-0)
include/haproxy/action.h (+10/-3)
include/haproxy/buf.h (+33/-0)
include/haproxy/cfgparse.h (+2/-0)
include/haproxy/channel.h (+37/-0)
include/haproxy/cli-t.h (+1/-0)
include/haproxy/connection-t.h (+2/-1)
include/haproxy/connection.h (+6/-6)
include/haproxy/counters-t.h (+0/-1)
include/haproxy/freq_ctr.h (+1/-1)
include/haproxy/h1.h (+17/-16)
include/haproxy/hlua-t.h (+1/-0)
include/haproxy/hlua.h (+3/-0)
include/haproxy/htx-t.h (+19/-4)
include/haproxy/htx.h (+2/-2)
include/haproxy/listener.h (+1/-1)
include/haproxy/pattern-t.h (+1/-1)
include/haproxy/pattern.h (+7/-4)
include/haproxy/proxy.h (+2/-2)
include/haproxy/receiver-t.h (+1/-0)
include/haproxy/server-t.h (+9/-2)
include/haproxy/server.h (+1/-1)
include/haproxy/session-t.h (+10/-4)
include/haproxy/session.h (+42/-28)
include/haproxy/stick_table-t.h (+1/-1)
include/haproxy/stick_table.h (+1/-0)
include/haproxy/stream-t.h (+1/-1)
include/haproxy/thread.h (+5/-0)
include/haproxy/tools.h (+20/-10)
include/import/ist.h (+4/-7)
reg-tests/connection/http_reuse_be_transparent.vtc (+1/-0)
reg-tests/converter/field.vtc (+4/-0)
reg-tests/converter/word.vtc (+43/-0)
reg-tests/http-messaging/http_abortonclose.vtc (+92/-8)
reg-tests/http-messaging/protocol_upgrade.vtc (+51/-0)
reg-tests/http-messaging/truncated.vtc (+102/-0)
reg-tests/log/wrong_ip_port_logging.vtc (+1/-1)
reg-tests/sample_fetches/vars.vtc (+3/-3)
scripts/build-vtest.sh (+18/-0)
scripts/git-show-backports (+67/-4)
src/activity.c (+14/-4)
src/backend.c (+18/-9)
src/cache.c (+17/-2)
src/cfgparse-global.c (+1/-1)
src/cfgparse-listen.c (+3/-1)
src/cfgparse.c (+25/-19)
src/check.c (+3/-1)
src/cli.c (+68/-47)
src/connection.c (+116/-77)
src/debug.c (+13/-2)
src/dns.c (+9/-3)
src/ev_epoll.c (+1/-1)
src/ev_evports.c (+8/-2)
src/ev_kqueue.c (+1/-1)
src/extcheck.c (+1/-1)
src/fcgi-app.c (+2/-0)
src/fd.c (+4/-4)
src/filters.c (+14/-19)
src/flt_spoe.c (+56/-56)
src/h1.c (+17/-6)
src/h1_htx.c (+17/-3)
src/h2.c (+52/-5)
src/haproxy.c (+27/-23)
src/hlua.c (+450/-213)
src/hlua_fcn.c (+4/-5)
src/http_ana.c (+64/-42)
src/htx.c (+57/-57)
src/listener.c (+27/-6)
src/log.c (+21/-16)
src/mailers.c (+1/-1)
src/map.c (+6/-0)
src/mux_fcgi.c (+43/-19)
src/mux_h1.c (+53/-34)
src/mux_h2.c (+147/-40)
src/mworker.c (+16/-17)
src/namespace.c (+11/-1)
src/pattern.c (+42/-77)
src/peers.c (+14/-2)
src/pool.c (+10/-5)
src/proto_tcp.c (+1/-1)
src/proto_uxst.c (+1/-1)
src/proxy.c (+16/-6)
src/resolvers.c (+1/-1)
src/sample.c (+5/-3)
src/server.c (+17/-7)
src/server_state.c (+10/-8)
src/session.c (+9/-8)
src/signal.c (+7/-0)
src/sock.c (+39/-0)
src/sock_unix.c (+7/-0)
src/ssl_ckch.c (+7/-1)
src/ssl_crtlist.c (+1/-3)
src/ssl_sock.c (+47/-9)
src/stats.c (+4/-4)
src/stick_table.c (+25/-3)
src/stream.c (+20/-7)
src/stream_interface.c (+12/-7)
src/tcp_rules.c (+1/-1)
src/tcpcheck.c (+1/-1)
src/time.c (+3/-0)
src/tools.c (+65/-14)
src/trace.c (+19/-2)
src/vars.c (+2/-1)
tests/exp/filltab25.c (+1/-1)
tests/unit/ist.c (+2/-2)
- git-ubuntu bot: Approve
- Renan Rodrigo (community): Approve
- Canonical Server packageset reviewers: Pending requested
- Canonical Server Reporter: Pending requested
-
Diff: 20570 lines (+7526/-2522)196 files modified.github/workflows/cross-zoo.yml (+1/-0)
.github/workflows/fedora-rawhide.yml (+1/-0)
.github/workflows/vtest.yml (+2/-2)
CHANGELOG (+565/-0)
INSTALL (+7/-7)
Makefile (+37/-2)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
addons/promex/service-prometheus.c (+35/-11)
admin/halog/halog.c (+2/-2)
debian/NEWS (+84/-0)
debian/changelog (+27/-0)
debian/patches/series (+0/-3)
dev/flags/show-sess-to-flags.sh (+1/-1)
dev/null (+0/-51)
dev/udp/udp-perturb.c (+1/-1)
doc/configuration.txt (+637/-289)
doc/internals/api/event_hdl.txt (+28/-17)
doc/internals/api/htx-api.txt (+9/-8)
doc/internals/api/scheduler.txt (+3/-0)
doc/lua-api/index.rst (+18/-7)
doc/management.txt (+33/-17)
doc/peers-v2.0.txt (+6/-0)
include/haproxy/activity-t.h (+0/-5)
include/haproxy/activity.h (+6/-0)
include/haproxy/applet.h (+3/-3)
include/haproxy/bug.h (+30/-9)
include/haproxy/cfgparse.h (+2/-0)
include/haproxy/channel.h (+1/-0)
include/haproxy/cli-t.h (+3/-0)
include/haproxy/compat.h (+6/-0)
include/haproxy/compiler.h (+31/-0)
include/haproxy/connection-t.h (+3/-2)
include/haproxy/counters-t.h (+0/-1)
include/haproxy/debug.h (+0/-1)
include/haproxy/defaults.h (+26/-0)
include/haproxy/global-t.h (+4/-1)
include/haproxy/h1.h (+16/-16)
include/haproxy/hlua-t.h (+1/-0)
include/haproxy/hlua.h (+3/-0)
include/haproxy/http.h (+15/-0)
include/haproxy/http_ana-t.h (+2/-2)
include/haproxy/htx-t.h (+10/-3)
include/haproxy/listener.h (+1/-1)
include/haproxy/log.h (+1/-0)
include/haproxy/mux_quic-t.h (+1/-0)
include/haproxy/mux_quic.h (+1/-1)
include/haproxy/net_helper.h (+28/-0)
include/haproxy/pattern-t.h (+1/-1)
include/haproxy/pool.h (+3/-0)
include/haproxy/protobuf.h (+5/-5)
include/haproxy/protocol-t.h (+11/-0)
include/haproxy/proxy.h (+2/-2)
include/haproxy/qpack-dec.h (+3/-0)
include/haproxy/queue.h (+2/-1)
include/haproxy/quic_cc.h (+2/-0)
include/haproxy/quic_conn-t.h (+18/-2)
include/haproxy/quic_conn.h (+10/-25)
include/haproxy/quic_loss-t.h (+1/-0)
include/haproxy/quic_loss.h (+1/-0)
include/haproxy/quic_openssl_compat.h (+3/-0)
include/haproxy/quic_stream-t.h (+4/-1)
include/haproxy/quic_stream.h (+2/-2)
include/haproxy/quic_tls.h (+10/-0)
include/haproxy/sc_strm.h (+2/-6)
include/haproxy/server-t.h (+12/-8)
include/haproxy/server.h (+3/-2)
include/haproxy/session-t.h (+10/-4)
include/haproxy/session.h (+42/-28)
include/haproxy/sink-t.h (+1/-0)
include/haproxy/ssl_ocsp-t.h (+4/-2)
include/haproxy/ssl_ocsp.h (+3/-0)
include/haproxy/stats-t.h (+1/-0)
include/haproxy/stconn.h (+1/-1)
include/haproxy/stick_table-t.h (+1/-1)
include/haproxy/stream-t.h (+1/-1)
include/haproxy/stream.h (+20/-2)
include/haproxy/task-t.h (+13/-5)
include/haproxy/task.h (+49/-13)
include/haproxy/tinfo-t.h (+3/-1)
include/haproxy/tools.h (+36/-10)
include/import/ist.h (+4/-7)
reg-tests/connection/h2_glitches.vtc (+108/-0)
reg-tests/http-messaging/h1_host_normalization.vtc (+148/-4)
reg-tests/http-messaging/protocol_upgrade.vtc (+160/-0)
reg-tests/http-messaging/truncated.vtc (+4/-1)
reg-tests/http-rules/acl_cli_spaces.vtc (+0/-2)
reg-tests/http-rules/forwarded-header-7239.vtc (+6/-0)
reg-tests/http-rules/map_ordering.map (+4/-0)
reg-tests/http-rules/map_ordering.vtc (+32/-0)
reg-tests/log/wrong_ip_port_logging.vtc (+1/-1)
reg-tests/mcli/mcli_debug_dev.vtc (+45/-0)
reg-tests/sample_fetches/vars.vtc (+3/-3)
reg-tests/ssl/show_ssl_ocspresponse.vtc (+2/-1)
scripts/build-vtest.sh (+9/-1)
scripts/git-show-backports (+2/-2)
src/activity.c (+36/-4)
src/applet.c (+1/-1)
src/auth.c (+10/-2)
src/backend.c (+58/-15)
src/cache.c (+21/-8)
src/cfgparse-global.c (+60/-2)
src/cfgparse-listen.c (+4/-2)
src/cfgparse-quic.c (+9/-0)
src/cfgparse-ssl.c (+6/-1)
src/cfgparse.c (+70/-25)
src/channel.c (+30/-0)
src/check.c (+1/-1)
src/cli.c (+118/-64)
src/clock.c (+44/-4)
src/connection.c (+156/-81)
src/debug.c (+140/-54)
src/errors.c (+22/-16)
src/ev_epoll.c (+1/-1)
src/ev_evports.c (+8/-2)
src/ev_kqueue.c (+1/-1)
src/event_hdl.c (+15/-5)
src/extcheck.c (+18/-2)
src/fcgi-app.c (+2/-0)
src/fd.c (+4/-4)
src/filters.c (+14/-19)
src/flt_bwlim.c (+5/-1)
src/flt_spoe.c (+57/-62)
src/flt_trace.c (+5/-0)
src/h1.c (+59/-22)
src/h1_htx.c (+22/-12)
src/h2.c (+52/-5)
src/h3.c (+246/-59)
src/haproxy.c (+57/-13)
src/hlua.c (+587/-250)
src/hlua_fcn.c (+8/-50)
src/hq_interop.c (+1/-1)
src/http_ana.c (+95/-60)
src/http_client.c (+7/-5)
src/http_ext.c (+22/-10)
src/http_htx.c (+26/-8)
src/htx.c (+5/-5)
src/jwt.c (+7/-0)
src/listener.c (+52/-5)
src/log.c (+79/-23)
src/mailers.c (+1/-1)
src/mux_fcgi.c (+10/-1)
src/mux_h1.c (+45/-32)
src/mux_h2.c (+308/-63)
src/mux_pt.c (+1/-5)
src/mux_quic.c (+190/-60)
src/mworker.c (+16/-17)
src/namespace.c (+11/-1)
src/pattern.c (+42/-71)
src/peers.c (+13/-10)
src/pool.c (+14/-6)
src/proto_quic.c (+4/-4)
src/proto_tcp.c (+1/-3)
src/proto_uxst.c (+1/-1)
src/proxy.c (+25/-36)
src/qpack-dec.c (+41/-8)
src/qpack-enc.c (+1/-1)
src/queue.c (+104/-4)
src/quic_cc.c (+19/-0)
src/quic_cc_cubic.c (+284/-58)
src/quic_cc_newreno.c (+8/-4)
src/quic_conn.c (+443/-191)
src/quic_frame.c (+7/-1)
src/quic_loss.c (+29/-3)
src/quic_openssl_compat.c (+16/-9)
src/quic_sock.c (+14/-9)
src/quic_stream.c (+95/-53)
src/quic_tp.c (+8/-8)
src/resolvers.c (+6/-4)
src/sample.c (+19/-9)
src/server.c (+87/-40)
src/server_state.c (+10/-8)
src/session.c (+13/-10)
src/signal.c (+12/-0)
src/sink.c (+27/-5)
src/sock.c (+35/-0)
src/ssl_ckch.c (+37/-40)
src/ssl_crtlist.c (+13/-9)
src/ssl_ocsp.c (+156/-51)
src/ssl_sample.c (+3/-1)
src/ssl_sock.c (+84/-16)
src/stats.c (+79/-37)
src/stconn.c (+22/-16)
src/stick_table.c (+163/-29)
src/stream.c (+44/-6)
src/tcp_rules.c (+5/-1)
src/tcpcheck.c (+1/-1)
src/thread.c (+2/-2)
src/tools.c (+145/-42)
src/trace.c (+42/-12)
src/vars.c (+2/-1)
src/wdt.c (+12/-2)
src/xprt_quic.c (+9/-0)
tests/exp/filltab25.c (+1/-1)
tests/unit/ist.c (+2/-2)
- git-ubuntu bot: Approve
- Renan Rodrigo (community): Approve
- Canonical Server packageset reviewers: Pending requested
- Canonical Server Reporter: Pending requested
-
Diff: 4261 lines (+1432/-486)77 files modified.github/h2spec.config (+2/-2)
CHANGELOG (+129/-0)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
debian/changelog (+11/-0)
debian/patches/series (+0/-1)
dev/null (+0/-51)
doc/configuration.txt (+33/-5)
doc/internals/api/htx-api.txt (+9/-8)
doc/management.txt (+9/-9)
include/haproxy/cfgparse.h (+1/-0)
include/haproxy/compiler.h (+17/-0)
include/haproxy/fd-t.h (+6/-0)
include/haproxy/fd.h (+4/-0)
include/haproxy/freq_ctr.h (+12/-0)
include/haproxy/mux_fcgi-t.h (+3/-0)
include/haproxy/mux_quic.h (+1/-1)
include/haproxy/openssl-compat.h (+5/-1)
include/haproxy/quic_conn.h (+7/-3)
include/haproxy/server-t.h (+1/-0)
include/haproxy/sink-t.h (+1/-0)
include/haproxy/task-t.h (+7/-2)
include/haproxy/task.h (+49/-13)
include/haproxy/tinfo-t.h (+5/-0)
include/import/plock.h (+17/-3)
reg-tests/http-messaging/truncated.vtc (+1/-0)
src/auth.c (+10/-2)
src/backend.c (+27/-13)
src/cfgparse-listen.c (+1/-1)
src/cfgparse-tcp.c (+0/-1)
src/cfgparse.c (+46/-15)
src/cli.c (+23/-10)
src/clock.c (+1/-1)
src/debug.c (+39/-5)
src/ev_epoll.c (+93/-2)
src/fd.c (+6/-1)
src/filters.c (+14/-19)
src/flt_spoe.c (+11/-10)
src/flt_trace.c (+5/-0)
src/freq_ctr.c (+56/-18)
src/h1_htx.c (+1/-1)
src/h2.c (+30/-3)
src/h3.c (+93/-8)
src/haproxy.c (+9/-2)
src/hlua.c (+20/-3)
src/hlua_fcn.c (+8/-50)
src/hq_interop.c (+1/-1)
src/http_ana.c (+33/-13)
src/htx.c (+5/-5)
src/log.c (+32/-23)
src/mux_fcgi.c (+118/-46)
src/mux_h1.c (+12/-7)
src/mux_h2.c (+33/-7)
src/mux_quic.c (+48/-19)
src/namespace.c (+11/-1)
src/peers.c (+5/-0)
src/proto_rhttp.c (+2/-2)
src/quic_tx.c (+23/-25)
src/sample.c (+1/-1)
src/server.c (+12/-2)
src/signal.c (+5/-0)
src/sink.c (+16/-3)
src/ssl_crtlist.c (+17/-0)
src/ssl_sock.c (+14/-1)
src/stats-json.c (+1/-1)
src/stats-proxy.c (+4/-3)
src/stick_table.c (+12/-1)
src/stream.c (+83/-20)
src/tcp_rules.c (+1/-1)
src/tcpcheck.c (+2/-1)
src/thread.c (+2/-2)
src/tools.c (+95/-28)
src/wdt.c (+12/-2)
src/xprt_quic.c (+2/-0)
tests/exp/filltab25.c (+1/-1)
tests/unit/ist.c (+2/-2)
CVE References
| Changed in haproxy (Ubuntu): | |
| importance: | Undecided → Wishlist |
| milestone: | none → ubuntu-25.08 |
| summary: |
- Backport of haproxy for 22.04 + Backport of haproxy from questing |
| summary: |
- Backport of haproxy from questing + Backport of haproxy from questing to jammy, noble, and plucky |
| Changed in haproxy (Ubuntu): | |
| assignee: | nobody → Athos Ribeiro (athos-ribeiro) |
| Changed in haproxy (Ubuntu Jammy): | |
| assignee: | nobody → Athos Ribeiro (athos-ribeiro) |
| Changed in haproxy (Ubuntu Plucky): | |
| assignee: | nobody → Athos Ribeiro (athos-ribeiro) |
| Changed in haproxy (Ubuntu Noble): | |
| assignee: | nobody → Athos Ribeiro (athos-ribeiro) |
| Changed in haproxy (Ubuntu): | |
| milestone: | ubuntu-25.08 → ubuntu-25.09 |
| description: | updated |
| tags: | added: server-todo |
| summary: |
- Backport of haproxy from questing to jammy, noble, and plucky + Micro release updates for jammy, noble, and plucky |
| description: | updated |
| description: | updated |
| Changed in haproxy (Ubuntu): | |
| milestone: | ubuntu-25.09 → ubuntu-25.10 |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| description: | updated |
| Changed in haproxy (Ubuntu Jammy): | |
| status: | New → In Progress |
| Changed in haproxy (Ubuntu Noble): | |
| status: | New → In Progress |
| Changed in haproxy (Ubuntu Plucky): | |
| status: | New → In Progress |
| Changed in haproxy (Ubuntu): | |
| status: | New → Incomplete |
| status: | Incomplete → Fix Released |

Hello Bryce, or anyone else affected,
Accepted haproxy into plucky-proposed. The package will build now and be available at https:/ /launchpad. net/ubuntu/ +source/ haproxy/ 3.0.10- 0ubuntu0. 25.04.1 in a few hours, and then in the -proposed repository.
Please help us by testing this new package. See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.
If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification- needed- plucky to verification- done-plucky. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification- failed- plucky. In either case, without details of your testing we will not be able to proceed.
Further information regarding the verification process can be found at https:/ /wiki.ubuntu. com/QATeam/ PerformingSRUVe rification . Thank you in advance for helping!
N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.