From 216b52c312c10bb5228a6c9f3bec2fea570f48ac Mon Sep 17 00:00:00 2001 From: tvallin Date: Wed, 17 Apr 2024 15:52:25 +0200 Subject: [PATCH] WsClient accept connection upgrade lowercase Signed-off-by: tvallin --- .../java/io/helidon/webclient/websocket/WsClientImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/webclient/websocket/src/main/java/io/helidon/webclient/websocket/WsClientImpl.java b/webclient/websocket/src/main/java/io/helidon/webclient/websocket/WsClientImpl.java index 6c9717eed01..63c3a58615c 100644 --- a/webclient/websocket/src/main/java/io/helidon/webclient/websocket/WsClientImpl.java +++ b/webclient/websocket/src/main/java/io/helidon/webclient/websocket/WsClientImpl.java @@ -55,6 +55,7 @@ class WsClientImpl implements WsClient { private static final System.Logger LOGGER = System.getLogger(WsClient.class.getName()); private static final Header HEADER_CONN_UPGRADE = HeaderValues.create(HeaderNames.CONNECTION, "Upgrade"); + private static final Header HEADER_CONN_UPGRADE_LOWERCASE = HeaderValues.create(HeaderNames.CONNECTION, "upgrade"); private static final HeaderName HEADER_WS_ACCEPT = HeaderNames.create("Sec-WebSocket-Accept"); private static final HeaderName HEADER_WS_KEY = HeaderNames.create("Sec-WebSocket-Key"); private static final LazyValue RANDOM = LazyValue.create(SecureRandom::new); @@ -127,9 +128,10 @@ public void connect(URI uri, WsListener listener) { ClientWsConnection session; try (HttpClientResponse response = upgradeResponse.response()) { ClientResponseHeaders responseHeaders = response.headers(); - if (!responseHeaders.contains(HEADER_CONN_UPGRADE)) { - throw new WsClientException("Failed to upgrade to WebSocket, expected Connection: Upgrade header. Headers: " - + responseHeaders); + if (!responseHeaders.contains(HEADER_CONN_UPGRADE) + && !responseHeaders.contains(HEADER_CONN_UPGRADE_LOWERCASE)) { + throw new WsClientException("Failed to upgrade to WebSocket, expected one of " + + "[Connection: Upgrade, Connection: upgrade] header. Headers: " + responseHeaders); } if (!responseHeaders.contains(HEADER_UPGRADE_WS)) { throw new WsClientException("Failed to upgrade to WebSocket, expected Upgrade: websocket header. Headers: "