New HAProxy upstream microreleases 2.4.30, 2.8.16, and 3.0.12
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| haproxy (Ubuntu) |
In Progress
|
Wishlist
|
Athos Ribeiro | ||
| Jammy |
In Progress
|
Undecided
|
Unassigned | ||
| Noble |
In Progress
|
Undecided
|
Unassigned | ||
| Plucky |
In Progress
|
Undecided
|
Unassigned | ||
| Questing |
In Progress
|
Undecided
|
Unassigned | ||
Bug Description
This bug tracks an update for the HAProxy package in the following Ubuntu
releases to the versions below:
* questing (25.10): HAProxy 3.0.12 (See entries from 3.0.11 to 3.0.12).
* plucky (25.04): HAProxy 3.0.12 (See entries from 3.0.11 to 3.0.12).
* noble (24.04): HAProxy 2.8.16.
* jammy (22.04): HAProxy 2.4.30.
These updates include bugfixes only following the SRU policy exception defined
at https:/
[Upstream changes]
HAProxy 3.0.12: https:/
HAProxy 2.8.16: https:/
HAProxy 2.4.30: https:/
Important bug fixes include:
* questing (25.10) and plucky (25.04) - HAProxy 3.0.12:
- BUG/MAJOR: quic: fix INITIAL padding with probing packet only
- BUG/MAJOR: mux-quic: fix crash on reload during emission
- BUG/MAJOR: stream: Remove READ/WRITE events on channels after analysers eval
- BUG/MAJOR: stream: Force channel analysis on successful synchronous send
- BUG/MAJOR: listeners: transfer connection accounting when switching listeners
- BUG/MAJOR: cache: Crash because of wrong cache entry deleted
* noble (24.04) - HAProxy 2.8.16:
- BUG/MAJOR: listeners: transfer connection accounting when switching
Also, all the new releases being introduced here include a CVE fix:
- BUG/CRITICAL: mjson: fix possible DoS when parsing numbers
already inapplied by security
However, this CVE was already introduced in the security pocket by the security team, so we will be just dropping the Ubuntu patch there.
[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.30 (jammy): https:/
HAproxy 2.8.16 (noble): https:/
HAproxy 3.0.12 (plucky/questing): 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.
A test build set is available at https:/
* Results:
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for amd64 @ 04.12.25 10:33:02 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for arm64 @ 04.12.25 10:33:56 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for armhf @ 04.12.25 10:36:41 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for ppc64el @ 04.12.25 10:51:14 Log️ 🗒️
- haproxy: jammy/haproxy/
+ ✅ haproxy on jammy for s390x @ 04.12.25 11:19:32 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for amd64 @ 04.12.25 10:35:07 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for arm64 @ 04.12.25 10:44:40 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for armhf @ 04.12.25 10:36:22 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for ppc64el @ 04.12.25 10:35:49 Log️ 🗒️
- haproxy: noble/haproxy/
+ ✅ haproxy on noble for s390x @ 04.12.25 10:32:47 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for amd64 @ 04.12.25 10:34:25 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for arm64 @ 04.12.25 10:33:38 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for armhf @ 04.12.25 10:35:54 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for ppc64el @ 04.12.25 10:34:12 Log️ 🗒️
- haproxy: plucky/
+ ✅ haproxy on plucky for s390x @ 04.12.25 10:33:14 Log️ 🗒️
- haproxy: questing/
+ ✅ haproxy on questing for amd64 @ 04.12.25 10:43:49 Log️ 🗒️
- haproxy: questing/
+ ✅ haproxy on questing for arm64 @ 04.12.25 10:54:32 Log️ 🗒️
- haproxy: questing/
+ ✅ haproxy on questing for armhf @ 04.12.25 10:35:43 Log️ 🗒️
- haproxy: questing/
+ ✅ haproxy on questing for ppc64el @ 04.12.25 10:35:28 Log️ 🗒️
- haproxy: questing/
+ ✅ haproxy on questing for s390x @ 04.12.25 10:53:24 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 are some 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 other than the CVE patch which was already available in the security pocket.
[Regression Potential - CA - Impact]
For the next Jammy update, we would upgrade HAPRoxy from 2.4.29 to 2.4.30. Since the CVE fix introduced in this new upstream version is already applied in jammy, this new version is only introducing a couple minor bug fixes which should have very little regression impact.
For the next Noble update, we would upgrade HAPRoxy from 2.8.15 to 2.8.16. Among the changes, there is 1 bug fix tagged as BUG/MAJOR and 8 uncategorized changes (potentially functional), where 7 are tagged as MINOR and 1 is tagged as MEDIUM.
For the next Plucky and Questing updates, we would upgrade HAPRoxy from 3.0.10 to 3.0.12. Among the changes, there are 6 bug fixes tagged as BUG/MAJOR and 17 uncategorized changes (potentially functional), where 15 are tagged as MINOR and 2 are 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) and Questing (25.10): HAProxy 3.0.12:
- MEDIUM: ssl/cli: relax crt insertion in crt-list of type directory Since
Since the name stored in a certificate tree can be an alias and not a path,
requiring full paths in the certificate name when when adding it through a CLI
was a bug. This is now fixed. It also means that The tool or user inserting the
certificate must now check itself that the certificate was placed at the right
spot on the filesystem.
- BUG/MAJOR: stream: Remove READ/WRITE events on channels after analysers eval
A couple flags are being removed after evaluation. Although this is supposed
to be a safe/internal only change, It is tagged a MAJOR because this area is
really sensitive to any changes. FWIW, this change caused a regression during
development and was reverted in this same released version.
- BUG/MAJOR: stream: Force channel analysis on successful synchronous send
This reverts the change above due to a regression and fixes the underlying
issue by adding a different flag instead of removing flags. This is set as
MAJOR due to the fixed regression.
- BUG/CRITICAL: mjson: fix possible DoS when parsing numbers
This was already applied by the security team
- MEDIUM: hlua: Add function to change the body length of an HTTP Message
This adds a new function for a lua filter to change the body length of an HTTP Message.
Noble (24.04): HAProxy 2.8.16:
Both entries here were already discussed above for Plucky/Questing:
- MEDIUM: hlua: Add function to change the body length of an HTTP Message
- BUG/CRITICAL: mjson: fix possible DoS when parsing numbers
Jammy (22.04): HAProxy 2.4.30:
The only entry here was already discussed above for Plucky/Questing:
- BUG/CRITICAL: mjson: fix possible DoS when parsing numbers
[Previous updates]
Related branches
- git-ubuntu bot: Approve
- Hector CAO (community): Approve
- Canonical Server Reporter: Pending requested
-
Diff: 327 lines (+83/-95)12 files modifiedCHANGELOG (+9/-0)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
debian/changelog (+11/-0)
debian/patches/series (+0/-1)
dev/null (+0/-83)
doc/configuration.txt (+7/-1)
include/haproxy/compiler.h (+35/-0)
src/h2.c (+3/-3)
src/mjson.c (+12/-2)
src/tools.c (+2/-1)
- git-ubuntu bot: Approve
- Hector CAO (community): Approve
- Canonical Server Reporter: Pending requested
-
Diff: 3358 lines (+1152/-417)59 files modifiedCHANGELOG (+113/-0)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
admin/halog/halog.c (+20/-1)
debian/changelog (+16/-0)
debian/patches/series (+0/-1)
dev/null (+0/-83)
doc/configuration.txt (+98/-32)
doc/lua-api/index.rst (+27/-2)
doc/management.txt (+30/-0)
include/haproxy/applet.h (+4/-1)
include/haproxy/compat.h (+5/-0)
include/haproxy/compiler.h (+11/-0)
include/haproxy/dns-t.h (+6/-1)
include/haproxy/fd.h (+2/-1)
include/haproxy/hlua-t.h (+2/-2)
include/haproxy/http.h (+46/-0)
include/haproxy/http_client-t.h (+1/-0)
include/haproxy/quic_tp-t.h (+7/-0)
include/haproxy/ssl_ocsp.h (+1/-0)
include/haproxy/ssl_sock-t.h (+1/-0)
reg-tests/README (+1/-1)
reg-tests/lua/close_wait_lf.vtc (+1/-0)
reg-tests/sample_fetches/cond_set_var.vtc (+2/-2)
scripts/announce-release (+4/-43)
scripts/build-vtest.sh (+1/-1)
src/acl.c (+3/-1)
src/activity.c (+4/-4)
src/check.c (+11/-3)
src/cli.c (+11/-1)
src/dns.c (+30/-7)
src/h1.c (+7/-1)
src/h2.c (+17/-3)
src/h3.c (+32/-4)
src/haproxy.c (+55/-30)
src/hlua.c (+156/-18)
src/http_client.c (+73/-27)
src/linuxcap.c (+8/-2)
src/listener.c (+7/-2)
src/log.c (+6/-6)
src/mjson.c (+12/-2)
src/mux_h1.c (+5/-3)
src/mux_h2.c (+11/-4)
src/mux_quic.c (+11/-1)
src/quic_conn.c (+19/-23)
src/quic_tp.c (+120/-48)
src/resolvers.c (+3/-1)
src/sample.c (+39/-5)
src/server.c (+17/-2)
src/sink.c (+13/-0)
src/ssl_ckch.c (+1/-21)
src/ssl_ocsp.c (+13/-2)
src/ssl_sock.c (+51/-13)
src/stick_table.c (+3/-3)
src/stream.c (+3/-3)
src/tcpcheck.c (+2/-1)
src/thread.c (+4/-0)
src/tools.c (+2/-1)
- git-ubuntu bot: Approve
- Hector CAO (community): Approve
- Canonical Server Reporter: Pending requested
-
Diff: 6227 lines (+1913/-861)103 files modifiedCHANGELOG (+184/-0)
Makefile (+2/-1)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
addons/deviceatlas/Makefile.inc (+2/-1)
admin/halog/halog.c (+28/-1)
debian/changelog (+22/-0)
debian/patches/series (+0/-1)
dev/null (+0/-83)
doc/DeviceAtlas-device-detection.txt (+26/-5)
doc/configuration.txt (+116/-39)
doc/lua-api/index.rst (+27/-2)
doc/management.txt (+30/-0)
include/haproxy/applet.h (+4/-1)
include/haproxy/compat.h (+17/-2)
include/haproxy/compiler.h (+11/-0)
include/haproxy/connection-t.h (+8/-6)
include/haproxy/dns-t.h (+6/-1)
include/haproxy/fd.h (+2/-1)
include/haproxy/hlua-t.h (+7/-4)
include/haproxy/http.h (+46/-0)
include/haproxy/http_client-t.h (+7/-2)
include/haproxy/list.h (+3/-2)
include/haproxy/mux_quic-t.h (+2/-0)
include/haproxy/mux_quic.h (+1/-0)
include/haproxy/quic_cc-t.h (+5/-5)
include/haproxy/quic_cc.h (+6/-4)
include/haproxy/quic_conn-t.h (+3/-0)
include/haproxy/quic_frame-t.h (+1/-1)
include/haproxy/quic_frame.h (+1/-1)
include/haproxy/quic_tp-t.h (+7/-0)
include/haproxy/sc_strm.h (+13/-10)
include/haproxy/server.h (+1/-1)
include/haproxy/ssl_ocsp.h (+1/-0)
include/haproxy/ssl_sock-t.h (+1/-0)
include/haproxy/stconn-t.h (+1/-0)
reg-tests/README (+1/-1)
reg-tests/http-rules/map_redirect.vtc (+8/-8)
reg-tests/lua/close_wait_lf.vtc (+1/-0)
reg-tests/sample_fetches/cond_set_var.vtc (+2/-2)
reg-tests/sample_fetches/srv_name.vtc (+1/-0)
reg-tests/server/cli_delete_dynamic_server.vtc (+1/-0)
reg-tests/ssl/ocsp_compat_check.vtc (+12/-0)
scripts/announce-release (+4/-43)
scripts/build-vtest.sh (+2/-2)
src/acl.c (+7/-1)
src/activity.c (+4/-4)
src/cache.c (+2/-2)
src/cfgparse-listen.c (+6/-0)
src/check.c (+11/-3)
src/cli.c (+19/-6)
src/connection.c (+30/-14)
src/cpuset.c (+4/-1)
src/dns.c (+30/-7)
src/flt_http_comp.c (+6/-0)
src/guid.c (+4/-6)
src/h1.c (+7/-1)
src/h2.c (+17/-3)
src/h3.c (+48/-4)
src/haproxy.c (+27/-15)
src/hlua.c (+195/-22)
src/hlua_fcn.c (+39/-13)
src/http_client.c (+74/-28)
src/listener.c (+7/-2)
src/log.c (+52/-48)
src/mjson.c (+12/-2)
src/mux_fcgi.c (+1/-1)
src/mux_h1.c (+5/-6)
src/mux_h2.c (+10/-7)
src/mux_quic.c (+40/-14)
src/pattern.c (+5/-1)
src/peers.c (+28/-1)
src/quic_cc.c (+30/-1)
src/quic_cc_cubic.c (+7/-21)
src/quic_cc_newreno.c (+7/-15)
src/quic_cc_nocc.c (+1/-1)
src/quic_cli.c (+2/-2)
src/quic_frame.c (+4/-5)
src/quic_rx.c (+47/-84)
src/quic_sock.c (+18/-2)
src/quic_ssl.c (+14/-23)
src/quic_tp.c (+120/-48)
src/quic_tx.c (+58/-63)
src/resolvers.c (+3/-1)
src/ring.c (+2/-2)
src/sample.c (+39/-5)
src/server.c (+90/-48)
src/server_state.c (+6/-2)
src/sink.c (+20/-5)
src/ssl_ckch.c (+2/-21)
src/ssl_crtlist.c (+0/-18)
src/ssl_ocsp.c (+14/-3)
src/ssl_sample.c (+8/-1)
src/ssl_sock.c (+51/-13)
src/stconn.c (+5/-0)
src/stick_table.c (+25/-14)
src/stream.c (+3/-3)
src/tcp_act.c (+2/-2)
src/tcpcheck.c (+2/-1)
src/thread.c (+4/-0)
src/tools.c (+5/-2)
src/trace.c (+7/-9)
- git-ubuntu bot: Approve
- Hector CAO (community): Approve
- Canonical Server Reporter: Pending requested
-
Diff: 6227 lines (+1913/-861)103 files modifiedCHANGELOG (+184/-0)
Makefile (+2/-1)
SUBVERS (+1/-1)
VERDATE (+2/-2)
VERSION (+1/-1)
addons/deviceatlas/Makefile.inc (+2/-1)
admin/halog/halog.c (+28/-1)
debian/changelog (+22/-0)
debian/patches/series (+0/-1)
dev/null (+0/-83)
doc/DeviceAtlas-device-detection.txt (+26/-5)
doc/configuration.txt (+116/-39)
doc/lua-api/index.rst (+27/-2)
doc/management.txt (+30/-0)
include/haproxy/applet.h (+4/-1)
include/haproxy/compat.h (+17/-2)
include/haproxy/compiler.h (+11/-0)
include/haproxy/connection-t.h (+8/-6)
include/haproxy/dns-t.h (+6/-1)
include/haproxy/fd.h (+2/-1)
include/haproxy/hlua-t.h (+7/-4)
include/haproxy/http.h (+46/-0)
include/haproxy/http_client-t.h (+7/-2)
include/haproxy/list.h (+3/-2)
include/haproxy/mux_quic-t.h (+2/-0)
include/haproxy/mux_quic.h (+1/-0)
include/haproxy/quic_cc-t.h (+5/-5)
include/haproxy/quic_cc.h (+6/-4)
include/haproxy/quic_conn-t.h (+3/-0)
include/haproxy/quic_frame-t.h (+1/-1)
include/haproxy/quic_frame.h (+1/-1)
include/haproxy/quic_tp-t.h (+7/-0)
include/haproxy/sc_strm.h (+13/-10)
include/haproxy/server.h (+1/-1)
include/haproxy/ssl_ocsp.h (+1/-0)
include/haproxy/ssl_sock-t.h (+1/-0)
include/haproxy/stconn-t.h (+1/-0)
reg-tests/README (+1/-1)
reg-tests/http-rules/map_redirect.vtc (+8/-8)
reg-tests/lua/close_wait_lf.vtc (+1/-0)
reg-tests/sample_fetches/cond_set_var.vtc (+2/-2)
reg-tests/sample_fetches/srv_name.vtc (+1/-0)
reg-tests/server/cli_delete_dynamic_server.vtc (+1/-0)
reg-tests/ssl/ocsp_compat_check.vtc (+12/-0)
scripts/announce-release (+4/-43)
scripts/build-vtest.sh (+2/-2)
src/acl.c (+7/-1)
src/activity.c (+4/-4)
src/cache.c (+2/-2)
src/cfgparse-listen.c (+6/-0)
src/check.c (+11/-3)
src/cli.c (+19/-6)
src/connection.c (+30/-14)
src/cpuset.c (+4/-1)
src/dns.c (+30/-7)
src/flt_http_comp.c (+6/-0)
src/guid.c (+4/-6)
src/h1.c (+7/-1)
src/h2.c (+17/-3)
src/h3.c (+48/-4)
src/haproxy.c (+27/-15)
src/hlua.c (+195/-22)
src/hlua_fcn.c (+39/-13)
src/http_client.c (+74/-28)
src/listener.c (+7/-2)
src/log.c (+52/-48)
src/mjson.c (+12/-2)
src/mux_fcgi.c (+1/-1)
src/mux_h1.c (+5/-6)
src/mux_h2.c (+10/-7)
src/mux_quic.c (+40/-14)
src/pattern.c (+5/-1)
src/peers.c (+28/-1)
src/quic_cc.c (+30/-1)
src/quic_cc_cubic.c (+7/-21)
src/quic_cc_newreno.c (+7/-15)
src/quic_cc_nocc.c (+1/-1)
src/quic_cli.c (+2/-2)
src/quic_frame.c (+4/-5)
src/quic_rx.c (+47/-84)
src/quic_sock.c (+18/-2)
src/quic_ssl.c (+14/-23)
src/quic_tp.c (+120/-48)
src/quic_tx.c (+58/-63)
src/resolvers.c (+3/-1)
src/ring.c (+2/-2)
src/sample.c (+39/-5)
src/server.c (+90/-48)
src/server_state.c (+6/-2)
src/sink.c (+20/-5)
src/ssl_ckch.c (+2/-21)
src/ssl_crtlist.c (+0/-18)
src/ssl_ocsp.c (+14/-3)
src/ssl_sample.c (+8/-1)
src/ssl_sock.c (+51/-13)
src/stconn.c (+5/-0)
src/stick_table.c (+25/-14)
src/stream.c (+3/-3)
src/tcp_act.c (+2/-2)
src/tcpcheck.c (+2/-1)
src/thread.c (+4/-0)
src/tools.c (+5/-2)
src/trace.c (+7/-9)
| Changed in haproxy (Ubuntu): | |
| importance: | Undecided → Wishlist |
| milestone: | none → ubuntu-26.02 |
| Changed in haproxy (Ubuntu): | |
| assignee: | nobody → Athos Ribeiro (athos) |
| summary: |
- Backport of haproxy for jammy, noble and questing + Micro release updates for jammy, noble and questing |
| description: | updated |
| description: | updated |
| summary: |
- Micro release updates for jammy, noble and questing + New HAProxy upstream microreleases 2.4.30, 2.8.16, and 3.0.12 |
| 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 Questing): | |
| status: | New → In Progress |
| Changed in haproxy (Ubuntu): | |
| status: | New → In Progress |
| milestone: | ubuntu-26.02 → ubuntu-25.12 |
| tags: | added: server-todo |

plucky is EOL in a ~month, do you still want to get the new version there?