From c1f3200c872c502aa141eafc5cc45fa92b37ce68 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Sun, 29 Nov 2015 13:44:52 +0900 Subject: [PATCH] Fix the incorrect usage/value of 'Connection: upgrade' Motivation: HttpClientUpgradeHandler uses HttpHeaderNames.UPGRADE as the value of the 'Connection' header, which is incorrect. It should use HttpHeaderValues.UPGRADE instead (note Names vs Values.) Also, HttpHeaderValues.UPGRADE should be 'upgrade' rather than 'Upgrade', as defined in: - https://tools.ietf.org/html/rfc7230#section-6.7 Modifications: - Use HttpHeaderValues.UPGRADE for a 'Connection' header - Lowercase the value of HttpHeaderValues.UPGRADE Result: - Fixes #4508 - Correct behavior --- .../io/netty/handler/codec/http/HttpClientUpgradeHandler.java | 2 +- .../java/io/netty/handler/codec/http/HttpHeaderValues.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpClientUpgradeHandler.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpClientUpgradeHandler.java index 4e96a626bc..1d4d74bb12 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpClientUpgradeHandler.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpClientUpgradeHandler.java @@ -261,7 +261,7 @@ public class HttpClientUpgradeHandler extends HttpObjectAggregator implements Ch builder.append(part); builder.append(','); } - builder.append(HttpHeaderNames.UPGRADE); + builder.append(HttpHeaderValues.UPGRADE); request.headers().set(HttpHeaderNames.CONNECTION, builder.toString()); } } diff --git a/codec-http/src/main/java/io/netty/handler/codec/http/HttpHeaderValues.java b/codec-http/src/main/java/io/netty/handler/codec/http/HttpHeaderValues.java index 9c75473acc..b06fad5716 100644 --- a/codec-http/src/main/java/io/netty/handler/codec/http/HttpHeaderValues.java +++ b/codec-http/src/main/java/io/netty/handler/codec/http/HttpHeaderValues.java @@ -193,9 +193,9 @@ public final class HttpHeaderValues { */ public static final AsciiString TRAILERS = new AsciiString("trailers"); /** - * {@code "Upgrade"} + * {@code "upgrade"} */ - public static final AsciiString UPGRADE = new AsciiString("Upgrade"); + public static final AsciiString UPGRADE = new AsciiString("upgrade"); /** * {@code "websocket"} */