[Git][java-team/undertow][upstream] New upstream version 2.0.28
Markus Koschany
gitlab at salsa.debian.org
Sun Nov 17 13:48:32 GMT 2019
Markus Koschany pushed to branch upstream at Debian Java Maintainers / undertow
Commits:
72e09fd8 by Markus Koschany at 2019-11-17T13:40:54Z
New upstream version 2.0.28
- - - - -
16 changed files:
- benchmarks/pom.xml
- core/pom.xml
- core/src/main/java/io/undertow/server/HttpServerExchange.java
- coverage-report/pom.xml
- dist/pom.xml
- examples/pom.xml
- karaf/pom.xml
- parser-generator/pom.xml
- pom.xml
- servlet/pom.xml
- servlet/src/main/java/io/undertow/servlet/spec/HttpServletResponseImpl.java
- servlet/src/test/java/io/undertow/servlet/test/response/cookies/DuplicateCookiesServlet.java
- servlet/src/test/java/io/undertow/servlet/test/response/cookies/OverwriteCookiesServlet.java
- servlet/src/test/java/io/undertow/servlet/test/response/cookies/ResponseCookiesTestCase.java
- spotbugs-exclude.xml
- websockets-jsr/pom.xml
Changes:
=====================================
benchmarks/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-benchmarks</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow Benchmarks</name>
@@ -41,27 +41,6 @@
<artifactId>undertow-core</artifactId>
</dependency>
- <dependency>
- <groupId>io.undertow</groupId>
- <artifactId>undertow-servlet</artifactId>
- </dependency>
-
- <dependency>
- <groupId>io.undertow</groupId>
- <artifactId>undertow-websockets-jsr</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.logging</groupId>
- <artifactId>jboss-logging-processor</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.xnio</groupId>
- <artifactId>xnio-nio</artifactId>
- </dependency>
-
<dependency>
<groupId>org.jboss.logmanager</groupId>
<artifactId>jboss-logmanager</artifactId>
@@ -72,22 +51,12 @@
<artifactId>jmh-core</artifactId>
</dependency>
- <dependency>
- <groupId>org.openjdk.jmh</groupId>
- <artifactId>jmh-generator-annprocess</artifactId>
- <scope>provided</scope>
- </dependency>
-
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- </dependency>
</dependencies>
<build>
=====================================
core/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-core</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow Core</name>
=====================================
core/src/main/java/io/undertow/server/HttpServerExchange.java
=====================================
@@ -645,7 +645,7 @@ public final class HttpServerExchange extends AbstractAttachable {
*/
public String getHostAndPort() {
String host = requestHeaders.getFirst(Headers.HOST);
- if (host == null) {
+ if (host == null || "".equals(host.trim())) {
InetSocketAddress address = getDestinationAddress();
host = NetworkUtils.formatPossibleIpv6Address(address.getHostString());
int port = address.getPort();
=====================================
coverage-report/pom.xml
=====================================
@@ -3,7 +3,7 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<artifactId>undertow-coverage-report</artifactId>
<name>Undertow Test Coverage Report</name>
=====================================
dist/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-dist</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow: Distribution</name>
=====================================
examples/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-examples</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow Examples</name>
=====================================
karaf/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>karaf</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<packaging>pom</packaging>
<name>Undertow Karaf Features</name>
=====================================
parser-generator/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parser-generator</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow Parser Generator</name>
<description>An annotation processor that is used to generate the HTTP parser</description>
=====================================
pom.xml
=====================================
@@ -28,7 +28,7 @@
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow</name>
<description>Undertow</description>
=====================================
servlet/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-servlet</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow Servlet</name>
=====================================
servlet/src/main/java/io/undertow/servlet/spec/HttpServletResponseImpl.java
=====================================
@@ -88,6 +88,7 @@ public final class HttpServletResponseImpl implements HttpServletResponse {
private String contentType;
private String charset;
private Supplier<Map<String, String>> trailerSupplier;
+ // a map of cookie name -> a map of (cookie path + cookie domain) -> cookie
private Map<String, Map<String, Cookie>> duplicateCookies;
public HttpServletResponseImpl(final HttpServerExchange exchange, final ServletContextImpl servletContext) {
@@ -113,27 +114,32 @@ public final class HttpServletResponseImpl implements HttpServletResponse {
if (exchange.getResponseCookies().containsKey(servletCookieAdaptor.getName())) {
final String cookieName = servletCookieAdaptor.getName();
final String path = servletCookieAdaptor.getPath();
+ final String domain = servletCookieAdaptor.getDomain();
final Cookie otherCookie = exchange.getResponseCookies().get(cookieName);
final String otherCookiePath = otherCookie.getPath();
- // if both cookies have same path and name, overwrite previous cookie
- if ((path == otherCookiePath) || (path != null && path.equals(otherCookiePath))) {
+ final String otherCookieDomain = otherCookie.getDomain();
+ // if both cookies have same path, name, and domain, overwrite previous cookie
+ if ((path == otherCookiePath || (path != null && path.equals(otherCookiePath))) &&
+ (domain == otherCookieDomain || (domain != null && domain.equals(otherCookieDomain)))) {
exchange.setResponseCookie(servletCookieAdaptor);
}
// else, create a duplicate cookie entry
else {
- final Map<String, Cookie> cookiesByPath;
+ final Map<String, Cookie> cookiesByPathPlusDomain;
if (duplicateCookies == null) {
duplicateCookies = new TreeMap<>();
exchange.addResponseCommitListener(
new DuplicateCookieCommitListener());
}
if (duplicateCookies.containsKey(cookieName)) {
- cookiesByPath = duplicateCookies.get(cookieName);
+ cookiesByPathPlusDomain = duplicateCookies.get(cookieName);
} else {
- cookiesByPath = new TreeMap<>();
- duplicateCookies.put(cookieName, cookiesByPath);
+ cookiesByPathPlusDomain = new TreeMap<>();
+ duplicateCookies.put(cookieName, cookiesByPathPlusDomain);
}
- cookiesByPath.put(otherCookiePath == null ? "null" : otherCookiePath, otherCookie);
+ String pathPlusDomain = (otherCookiePath == null ? "null" : otherCookiePath) +
+ (otherCookieDomain == null? "null" : otherCookieDomain);
+ cookiesByPathPlusDomain.put(pathPlusDomain, otherCookie);
}
}
exchange.setResponseCookie(servletCookieAdaptor);
=====================================
servlet/src/test/java/io/undertow/servlet/test/response/cookies/DuplicateCookiesServlet.java
=====================================
@@ -35,14 +35,35 @@ public class DuplicateCookiesServlet extends HttpServlet {
@Override
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
- Cookie cookie1 = new Cookie("test", "test");
- cookie1.setPath("/test");
+ Cookie cookie1 = new Cookie("test1", "test1");
+ cookie1.setPath("/test1_1");
+
+ Cookie cookie2 = new Cookie("test1", "test1");
+ cookie2.setPath("/test1_2");
+
+ Cookie cookie3 = new Cookie("test2", "test2");
+ cookie3.setPath("/test2");
+
+ Cookie cookie4 = new Cookie("test2", "test2");
+ cookie4.setPath("/test2");
+ cookie4.setDomain("www.domain2.com");
+
+ Cookie cookie5 = new Cookie("test3", "test3");
+ cookie5.setDomain("www.domain3-1.com");
+
+ Cookie cookie6 = new Cookie("test3", "test3");
+ cookie6.setDomain("www.domain3-2.com");
+
+ Cookie cookie7 = new Cookie("test3", "test3");
- Cookie cookie2 = new Cookie("test", "test");
- cookie2.setPath("/test2");
resp.addCookie(cookie1);
resp.addCookie(cookie2);
+ resp.addCookie(cookie3);
+ resp.addCookie(cookie4);
+ resp.addCookie(cookie5);
+ resp.addCookie(cookie6);
+ resp.addCookie(cookie7);
resp.getWriter().append("Served at: ").append(req.getContextPath());
}
=====================================
servlet/src/test/java/io/undertow/servlet/test/response/cookies/OverwriteCookiesServlet.java
=====================================
@@ -47,11 +47,34 @@ public class OverwriteCookiesServlet extends HttpServlet {
Cookie cookie4 = new javax.servlet.http.Cookie("test", "test4");
Cookie cookie5 = new javax.servlet.http.Cookie("test", "test5");
+ Cookie cookie6 = new javax.servlet.http.Cookie("test", "test6");
+ cookie6.setPath("/test");
+ cookie6.setDomain("www.domain.com");
+
+ Cookie cookie7 = new javax.servlet.http.Cookie("test", "test7");
+ cookie7.setPath("/test");
+ cookie7.setDomain("www.domain.com");
+
+ Cookie cookie8 = new javax.servlet.http.Cookie("test", "test8");
+ cookie8.setPath("/test");
+ cookie8.setDomain("www.domain.com");
+
+ Cookie cookie9 = new javax.servlet.http.Cookie("test", "test9");
+ cookie9.setDomain("www.domain.com");
+
+ Cookie cookie10 = new javax.servlet.http.Cookie("test", "test10");
+ cookie10.setDomain("www.domain.com");
+
resp.addCookie(cookie1);
resp.addCookie(cookie2);
resp.addCookie(cookie3);
resp.addCookie(cookie4);
resp.addCookie(cookie5);
+ resp.addCookie(cookie6);
+ resp.addCookie(cookie7);
+ resp.addCookie(cookie8);
+ resp.addCookie(cookie9);
+ resp.addCookie(cookie10);
// creating session -> additional jsessionid set-cookie
req.getSession().setAttribute("CleanSessions", true);
=====================================
servlet/src/test/java/io/undertow/servlet/test/response/cookies/ResponseCookiesTestCase.java
=====================================
@@ -18,6 +18,9 @@
package io.undertow.servlet.test.response.cookies;
+import java.util.Arrays;
+import java.util.Comparator;
+
import javax.servlet.ServletException;
import io.undertow.servlet.api.ServletInfo;
@@ -89,9 +92,16 @@ public class ResponseCookiesTestCase {
assertEquals("Served at: /servletContext", response);
final Header[] setCookieHeaders = result.getHeaders("Set-Cookie");
- assertEquals(2, setCookieHeaders.length);
- assertEquals("test=test; path=/test", setCookieHeaders[0].getValue());
- assertEquals("test=test; path=/test2", setCookieHeaders[1].getValue());
+ assertEquals(7, setCookieHeaders.length);
+ Arrays.sort(setCookieHeaders, Comparator.comparing(Object::toString));
+ assertEquals("test1=test1; path=/test1_1", setCookieHeaders[0].getValue());
+ assertEquals("test1=test1; path=/test1_2", setCookieHeaders[1].getValue());
+ assertEquals("test2=test2; path=/test2", setCookieHeaders[2].getValue());
+ assertEquals("test2=test2; path=/test2; domain=www.domain2.com", setCookieHeaders[3].getValue());
+ assertEquals("test3=test3", setCookieHeaders[4].getValue());
+ assertEquals("test3=test3; domain=www.domain3-1.com", setCookieHeaders[5].getValue());
+ assertEquals("test3=test3; domain=www.domain3-2.com", setCookieHeaders[6].getValue());
+
} finally {
client.getConnectionManager().shutdown();
}
@@ -109,11 +119,15 @@ public class ResponseCookiesTestCase {
assertEquals("Served at: /servletContext", response);
final Header[] setCookieHeaders = result.getHeaders("Set-Cookie");
- assertEquals(3, setCookieHeaders.length);
- assertEquals("test=test2; path=/test", setCookieHeaders[0].getValue());
- assertTrue("Header " + setCookieHeaders[1] + "didn't match expected regex",
- setCookieHeaders[1].getValue().matches("JSESSIONID=.*; path=/servletContext"));
- assertEquals("test=test5", setCookieHeaders[2].getValue());
+ assertEquals(5, setCookieHeaders.length);
+ Arrays.sort(setCookieHeaders, Comparator.comparing(Object::toString));
+ assertTrue("Header " + setCookieHeaders[0] + "didn't match expected regex",
+ setCookieHeaders[0].getValue().matches("JSESSIONID=.*; path=/servletContext"));
+ assertEquals("test=test10; domain=www.domain.com", setCookieHeaders[1].getValue());
+ assertEquals("test=test2; path=/test", setCookieHeaders[2].getValue());
+ assertEquals("test=test5", setCookieHeaders[3].getValue());
+ assertEquals("test=test8; path=/test; domain=www.domain.com", setCookieHeaders[4].getValue());
+
} finally {
client.getConnectionManager().shutdown();
}
=====================================
spotbugs-exclude.xml
=====================================
@@ -293,4 +293,11 @@
<Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
<Class name="io.undertow.client.http.HttpClientConnection$ClientReadListener" />
</Match>
+ <!-- Comparison of cookies path and domain with == before invoking equals is necessary because
+ both could be null; only if the == fails we check for one of them != null && equals the other -->
+ <Match>
+ <Bug pattern="ES_COMPARING_STRINGS_WITH_EQ"/>
+ <Class name="io.undertow.servlet.spec.HttpServletResponseImpl"/>
+ <Method name="addCookie"/>
+ </Match>
</FindBugsFilter>
=====================================
websockets-jsr/pom.xml
=====================================
@@ -25,12 +25,12 @@
<parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-parent</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
</parent>
<groupId>io.undertow</groupId>
<artifactId>undertow-websockets-jsr</artifactId>
- <version>2.0.27.Final</version>
+ <version>2.0.28.Final</version>
<name>Undertow WebSockets JSR356 implementations</name>
View it on GitLab: https://salsa.debian.org/java-team/undertow/commit/72e09fd89dacbafe94bac2b20b23acc981a88075
--
View it on GitLab: https://salsa.debian.org/java-team/undertow/commit/72e09fd89dacbafe94bac2b20b23acc981a88075
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20191117/ba4d3796/attachment.html>
More information about the pkg-java-commits
mailing list