From 6c25f5995376a3dc051d1f513104eed4bb0d672f Mon Sep 17 00:00:00 2001 From: Peter Levart Date: Tue, 27 Jul 2021 16:35:40 +0200 Subject: [PATCH 1/4] Use '; ' as a separator between values of Cookie or Cookie2 request headers instead of ',' which does not work for some servers any more. HttpUrlConnector and JdkConnector are affected. --- .../jersey/jdk/connector/internal/HttpRequestEncoder.java | 5 ++++- .../glassfish/jersey/client/internal/HttpUrlConnector.java | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java index d1a116b078..72861e95a4 100644 --- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java +++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java @@ -36,10 +36,13 @@ class HttpRequestEncoder { private static void appendUpgradeHeaders(StringBuilder request, Map> headers) { for (Map.Entry> header : headers.entrySet()) { + String delimiter = "Cookie".equalsIgnoreCase(header.getKey()) || + "Cookie2".equalsIgnoreCase(header.getKey()) + ? "; " : ","; StringBuilder value = new StringBuilder(); for (String valuePart : header.getValue()) { if (value.length() != 0) { - value.append(","); + value.append(delimiter); } value.append(valuePart); } diff --git a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java index 443c8573ed..ce8052b996 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java @@ -425,6 +425,9 @@ private void setOutboundHeaders(MultivaluedMap headers, HttpURLC boolean restrictedSent = false; for (Map.Entry> header : headers.entrySet()) { String headerName = header.getKey(); + String delimiter = "Cookie".equalsIgnoreCase(headerName) || + "Cookie2".equalsIgnoreCase(headerName) + ? "; " : ","; String headerValue; List headerValues = header.getValue(); @@ -436,7 +439,7 @@ private void setOutboundHeaders(MultivaluedMap headers, HttpURLC boolean add = false; for (Object value : headerValues) { if (add) { - b.append(','); + b.append(delimiter); } add = true; b.append(value); From dd29cc01bb96d54869c08bf903e597c79440427f Mon Sep 17 00:00:00 2001 From: Peter Levart Date: Tue, 27 Jul 2021 18:42:19 +0200 Subject: [PATCH 2/4] Fix checkstyle errors --- .../jersey/jdk/connector/internal/HttpRequestEncoder.java | 4 ++-- .../glassfish/jersey/client/internal/HttpUrlConnector.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java index 72861e95a4..417f214751 100644 --- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java +++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java @@ -36,8 +36,8 @@ class HttpRequestEncoder { private static void appendUpgradeHeaders(StringBuilder request, Map> headers) { for (Map.Entry> header : headers.entrySet()) { - String delimiter = "Cookie".equalsIgnoreCase(header.getKey()) || - "Cookie2".equalsIgnoreCase(header.getKey()) + String delimiter = "Cookie".equalsIgnoreCase(header.getKey()) + || "Cookie2".equalsIgnoreCase(header.getKey()) ? "; " : ","; StringBuilder value = new StringBuilder(); for (String valuePart : header.getValue()) { diff --git a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java index ce8052b996..b59d628867 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java @@ -425,8 +425,8 @@ private void setOutboundHeaders(MultivaluedMap headers, HttpURLC boolean restrictedSent = false; for (Map.Entry> header : headers.entrySet()) { String headerName = header.getKey(); - String delimiter = "Cookie".equalsIgnoreCase(headerName) || - "Cookie2".equalsIgnoreCase(headerName) + String delimiter = "Cookie".equalsIgnoreCase(headerName) + || "Cookie2".equalsIgnoreCase(headerName) ? "; " : ","; String headerValue; From 9d1c22f3d4d3e554d79ecea0e66d1ea6bcd6ce1d Mon Sep 17 00:00:00 2001 From: Peter Levart Date: Tue, 27 Jul 2021 18:58:02 +0200 Subject: [PATCH 3/4] Fix copyright in a header --- .../jersey/jdk/connector/internal/HttpRequestEncoder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java index 417f214751..c67288d42f 100644 --- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java +++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at From 65fcdc05b375c7ada1643e269b3a98c4942c7d73 Mon Sep 17 00:00:00 2001 From: Peter Levart Date: Fri, 10 Sep 2021 13:23:32 +0200 Subject: [PATCH 4/4] Remove deprecated Cookie2 as a special-case header --- .../jersey/jdk/connector/internal/HttpRequestEncoder.java | 4 +--- .../glassfish/jersey/client/internal/HttpUrlConnector.java | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java index c67288d42f..6b04b59742 100644 --- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java +++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequestEncoder.java @@ -36,9 +36,7 @@ class HttpRequestEncoder { private static void appendUpgradeHeaders(StringBuilder request, Map> headers) { for (Map.Entry> header : headers.entrySet()) { - String delimiter = "Cookie".equalsIgnoreCase(header.getKey()) - || "Cookie2".equalsIgnoreCase(header.getKey()) - ? "; " : ","; + String delimiter = "Cookie".equalsIgnoreCase(header.getKey()) ? "; " : ","; StringBuilder value = new StringBuilder(); for (String valuePart : header.getValue()) { if (value.length() != 0) { diff --git a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java index b59d628867..568b9cb221 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java @@ -425,9 +425,7 @@ private void setOutboundHeaders(MultivaluedMap headers, HttpURLC boolean restrictedSent = false; for (Map.Entry> header : headers.entrySet()) { String headerName = header.getKey(); - String delimiter = "Cookie".equalsIgnoreCase(headerName) - || "Cookie2".equalsIgnoreCase(headerName) - ? "; " : ","; + String delimiter = "Cookie".equalsIgnoreCase(headerName) ? "; " : ","; String headerValue; List headerValues = header.getValue();