From b332a99365fc8404b7a1a1e7d5c9a9c42b6fe720 Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 19 Oct 2026 09:17:20 +0200 Subject: [PATCH] CAMEL-25704: camel-undertow - add the 4.22.3 and 4.18.6 upgrade-guide notes on main Sync main's canonical upgrade guides with the backports (#28065 to camel-4.22.x, #28064 to camel-4.18.x): the producer refuses a request target or header value with control characters. 4.22.x ships in 4.22.3 (4.22.2 is already tagged). Co-Authored-By: Claude Opus 4.8 Signed-off-by: Andrea Cosentino --- .../ROOT/pages/camel-4x-upgrade-guide-4_18.adoc | 11 +++++++++++ .../ROOT/pages/camel-4x-upgrade-guide-4_22.adoc | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc index 8c3dc42817e1a..ec5ea391ddb18 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc @@ -233,6 +233,17 @@ receive the messages of the producers, and it is closed when it sends a message. A WebSocket client that connected without satisfying the configured security provider or allowed roles is now rejected: it must authenticate, or the option must be removed from the WebSocket endpoint. +=== camel-undertow - the producer refuses a request target or header value with control characters + +The undertow producer writes the path, query and header values of the outgoing request to the socket one character at +a time, without validating them. A carriage return or line feed therefore broke the request into further lines, and a +character above `0xFF` was written as a single, different byte (for example `U+010A` became a line feed). The producer +now refuses to send a request path, query or header value that contains a control character or a character above +`0xFF`, and fails the exchange with an `IllegalArgumentException` instead. A space and a tab, which do not change the +framing, are still allowed. Routes that put a percent-encoded control character (such as `%0D%0A`) into the +`CamelHttpPath` or `CamelHttpQuery` header, which the producer decodes before building the request, are the ones most +likely to be affected. + == Upgrading from 4.18.4 to 4.18.5 === camel-azure-eventhubs diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc index df13ee119eb9a..221c1ecbc0053 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc @@ -35,6 +35,17 @@ multi-host cluster still receives them. Previously they were registered for any including the host of a node with another scheme or port, is now sent without them. A client set with the `client` or `openSearchClient` option is not changed. +=== camel-undertow - the producer refuses a request target or header value with control characters + +The undertow producer writes the path, query and header values of the outgoing request to the socket one character at +a time, without validating them. A carriage return or line feed therefore broke the request into further lines, and a +character above `0xFF` was written as a single, different byte (for example `U+010A` became a line feed). The producer +now refuses to send a request path, query or header value that contains a control character or a character above +`0xFF`, and fails the exchange with an `IllegalArgumentException` instead. A space and a tab, which do not change the +framing, are still allowed. Routes that put a percent-encoded control character (such as `%0D%0A`) into the +`CamelHttpPath` or `CamelHttpQuery` header, which the producer decodes before building the request, are the ones most +likely to be affected. + == Upgrading from 4.22.1 to 4.22.2 === camel-lra - only an LRA hosted by the configured coordinator is joined