--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Hi,
This is a pre-upload request to unblock jetty9/9.4.39-1, this update fixes
3 vulnerabilities (CVE-2021-28163, CVE-2021-28164 and CVE-2021-28165).
The debdiff is attached below.
Thank you,
Emmanuel Bourg
unblock jetty9/9.4.38-1
diff -Nru jetty9-9.4.38/aggregates/jetty-all/pom.xml jetty9-9.4.39/aggregates/jetty-all/pom.xml
--- jetty9-9.4.38/aggregates/jetty-all/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/aggregates/jetty-all/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/aggregates/jetty-all-compact3/pom.xml jetty9-9.4.39/aggregates/jetty-all-compact3/pom.xml
--- jetty9-9.4.38/aggregates/jetty-all-compact3/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/aggregates/jetty-all-compact3/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/apache-jsp/pom.xml jetty9-9.4.39/apache-jsp/pom.xml
--- jetty9-9.4.38/apache-jsp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/apache-jsp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apache-jsp</artifactId>
diff -Nru jetty9-9.4.38/apache-jstl/pom.xml jetty9-9.4.39/apache-jstl/pom.xml
--- jetty9-9.4.38/apache-jstl/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/apache-jstl/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apache-jstl</artifactId>
diff -Nru jetty9-9.4.38/build-resources/pom.xml jetty9-9.4.39/build-resources/pom.xml
--- jetty9-9.4.38/build-resources/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/build-resources/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>build-resources</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<packaging>jar</packaging>
<name>Jetty :: Build Resources</name>
diff -Nru jetty9-9.4.38/debian/changelog jetty9-9.4.39/debian/changelog
--- jetty9-9.4.38/debian/changelog 2021-02-28 21:50:15.000000000 +0100
+++ jetty9-9.4.39/debian/changelog 2021-04-12 00:11:03.000000000 +0200
@@ -1,3 +1,19 @@
+jetty9 (9.4.39-1) unstable; urgency=high
+
+ * New upstream release
+ - Fixed CVE-2021-28163: If a user uses a webapps directory that is a
+ symlink, the contents of the webapps directory is deployed as a static
+ webapp, inadvertently serving the webapps themselves and anything else
+ that might be in that directory.
+ - Fixes CVE-2021-28164: The default compliance mode allows requests with
+ URIs that contain %2e or %2e%2e segments to access protected resources
+ within the WEB-INF directory. This can reveal sensitive information
+ regarding the implementation of a web application.
+ - Fixes CVE-2021-28165: CPU usage can reach 100% upon receiving a large
+ invalid TLS frame.
+
+ -- Emmanuel Bourg <ebourg@apache.org> Mon, 12 Apr 2021 00:11:03 +0200
+
jetty9 (9.4.38-1) unstable; urgency=medium
* New upstream release
diff -Nru jetty9-9.4.38/examples/async-rest/async-rest-jar/pom.xml jetty9-9.4.39/examples/async-rest/async-rest-jar/pom.xml
--- jetty9-9.4.38/examples/async-rest/async-rest-jar/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/examples/async-rest/async-rest-jar/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>example-async-rest</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/examples/async-rest/async-rest-webapp/pom.xml jetty9-9.4.39/examples/async-rest/async-rest-webapp/pom.xml
--- jetty9-9.4.38/examples/async-rest/async-rest-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/examples/async-rest/async-rest-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>example-async-rest</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/examples/async-rest/pom.xml jetty9-9.4.39/examples/async-rest/pom.xml
--- jetty9-9.4.38/examples/async-rest/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/examples/async-rest/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.examples</groupId>
<artifactId>examples-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/examples/embedded/pom.xml jetty9-9.4.39/examples/embedded/pom.xml
--- jetty9-9.4.38/examples/embedded/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/examples/embedded/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.examples</groupId>
<artifactId>examples-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/examples/pom.xml jetty9-9.4.39/examples/pom.xml
--- jetty9-9.4.38/examples/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/examples/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-client/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-client/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-alpn-client</artifactId>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-conscrypt-client/src/test/java/org/eclipse/jetty/alpn/java/client/ConscryptHTTP2ClientTest.java jetty9-9.4.39/jetty-alpn/jetty-alpn-conscrypt-client/src/test/java/org/eclipse/jetty/alpn/java/client/ConscryptHTTP2ClientTest.java
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-conscrypt-client/src/test/java/org/eclipse/jetty/alpn/java/client/ConscryptHTTP2ClientTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-conscrypt-client/src/test/java/org/eclipse/jetty/alpn/java/client/ConscryptHTTP2ClientTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -43,9 +43,12 @@
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledOnOs;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.condition.OS.LINUX;
+@EnabledOnOs({LINUX}) // TODO review if should be enabled on other OS
public class ConscryptHTTP2ClientTest
{
@Tag("external")
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-java-client/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-java-client/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-java-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-java-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-java-server/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-java-server/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-java-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-java-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-alpn/jetty-alpn-server/pom.xml jetty9-9.4.39/jetty-alpn/jetty-alpn-server/pom.xml
--- jetty9-9.4.38/jetty-alpn/jetty-alpn-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/jetty-alpn-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-alpn-server</artifactId>
diff -Nru jetty9-9.4.38/jetty-alpn/pom.xml jetty9-9.4.39/jetty-alpn/pom.xml
--- jetty9-9.4.38/jetty-alpn/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-alpn/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-alpn-parent</artifactId>
diff -Nru jetty9-9.4.38/jetty-annotations/pom.xml jetty9-9.4.39/jetty-annotations/pom.xml
--- jetty9-9.4.38/jetty-annotations/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-annotations/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-annotations</artifactId>
diff -Nru jetty9-9.4.38/jetty-ant/pom.xml jetty9-9.4.39/jetty-ant/pom.xml
--- jetty9-9.4.38/jetty-ant/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-ant/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-ant</artifactId>
diff -Nru jetty9-9.4.38/jetty-bom/pom.xml jetty9-9.4.39/jetty-bom/pom.xml
--- jetty9-9.4.38/jetty-bom/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-bom/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -9,7 +9,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<build>
@@ -53,336 +53,336 @@
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jsp</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>apache-jstl</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-java-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-openjdk8-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-openjdk8-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-conscrypt-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-conscrypt-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-alpn-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-annotations</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-ant</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-continuation</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-deploy</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-distribution</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<type>zip</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-distribution</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<type>tar.gz</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.gcloud</groupId>
<artifactId>jetty-gcloud-session-manager</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-home</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<type>zip</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-home</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<type>tar.gz</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-common</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-hpack</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-http-client-transport</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http-spi</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-common</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-remote-query</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-embedded-query</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-hazelcast</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaas</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jaspi</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jmx</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jndi</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.memcached</groupId>
<artifactId>jetty-memcached-sessions</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-nosql</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-boot</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-boot-jsp</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-boot-warurl</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-httpservice</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-plus</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-proxy</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-quickstart</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-rewrite</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-openid</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-spring</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-unixsocket</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util-ajax</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>javax-websocket-client-impl</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>javax-websocket-server-impl</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-api</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-common</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-server</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-servlet</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-xml</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</dependency>
</dependencies>
</dependencyManagement>
diff -Nru jetty9-9.4.38/jetty-cdi/pom.xml jetty9-9.4.39/jetty-cdi/pom.xml
--- jetty9-9.4.38/jetty-cdi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-cdi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty</groupId>
diff -Nru jetty9-9.4.38/jetty-cdi/src/test/java/org/eclipse/jetty/embedded/EmbeddedWeldTest.java jetty9-9.4.39/jetty-cdi/src/test/java/org/eclipse/jetty/embedded/EmbeddedWeldTest.java
--- jetty9-9.4.38/jetty-cdi/src/test/java/org/eclipse/jetty/embedded/EmbeddedWeldTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-cdi/src/test/java/org/eclipse/jetty/embedded/EmbeddedWeldTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -167,7 +167,7 @@
@Test
public void testWebappContext() throws Exception
{
- Server server = new Server(8080);
+ Server server = new Server(0);
server.addConnector(new LocalConnector(server));
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
@@ -199,7 +199,7 @@
@Test
public void testWebappContextDiscovered() throws Exception
{
- Server server = new Server(8080);
+ Server server = new Server(0);
server.addConnector(new LocalConnector(server));
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
diff -Nru jetty9-9.4.38/jetty-client/pom.xml jetty9-9.4.39/jetty-client/pom.xml
--- jetty9-9.4.38/jetty-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -51,6 +51,7 @@
<goal>shade</goal>
</goals>
<configuration>
+ <minimizeJar>true</minimizeJar>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>hybrid</shadedClassifierName>
<artifactSet>
diff -Nru jetty9-9.4.38/jetty-continuation/pom.xml jetty9-9.4.39/jetty-continuation/pom.xml
--- jetty9-9.4.38/jetty-continuation/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-continuation/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-continuation</artifactId>
diff -Nru jetty9-9.4.38/jetty-deploy/pom.xml jetty9-9.4.39/jetty-deploy/pom.xml
--- jetty9-9.4.38/jetty-deploy/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-deploy/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-deploy</artifactId>
diff -Nru jetty9-9.4.38/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java jetty9-9.4.39/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java
--- jetty9-9.4.38/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java 2021-03-25 15:36:22.000000000 +0100
@@ -49,7 +49,7 @@
{
private static final Logger LOG = Log.getLogger(ScanningAppProvider.class);
- private Map<String, App> _appMap = new HashMap<String, App>();
+ private final Map<String, App> _appMap = new HashMap<>();
private DeploymentManager _deploymentManager;
protected FilenameFilter _filenameFilter;
diff -Nru jetty9-9.4.38/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java jetty9-9.4.39/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java
--- jetty9-9.4.38/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java 2021-03-25 15:36:22.000000000 +0100
@@ -30,6 +30,8 @@
import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.annotation.ManagedAttribute;
import org.eclipse.jetty.util.annotation.ManagedObject;
+import org.eclipse.jetty.util.log.Log;
+import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.xml.XmlConfiguration;
@@ -62,6 +64,8 @@
@ManagedObject("Provider for start-up deployement of webapps based on presence in directory")
public class WebAppProvider extends ScanningAppProvider
{
+ private static final Logger LOG = Log.getLogger(WebAppProvider.class);
+
private boolean _extractWars = false;
private boolean _parentLoaderPriority = false;
private ConfigurationManager _configurationManager;
@@ -74,28 +78,25 @@
@Override
public boolean accept(File dir, String name)
{
- if (!dir.exists())
- {
+ if (dir == null || !dir.exists())
return false;
- }
- String lowername = name.toLowerCase(Locale.ENGLISH);
- File file = new File(dir, name);
- Resource r = Resource.newResource(file);
- if (getMonitoredResources().contains(r) && r.isDirectory())
- {
- return false;
- }
+ String lowerName = name.toLowerCase(Locale.ENGLISH);
+
+ Resource resource = Resource.newResource(new File(dir, name));
+ for (Resource m : getMonitoredResources())
+ if (resource.isSame(m))
+ return false;
// ignore hidden files
- if (lowername.startsWith("."))
+ if (lowerName.startsWith("."))
return false;
// Ignore some directories
- if (file.isDirectory())
+ if (resource.isDirectory())
{
// is it a nominated config directory
- if (lowername.endsWith(".d"))
+ if (lowerName.endsWith(".d"))
return false;
// is it an unpacked directory for an existing war file?
@@ -107,18 +108,18 @@
return false;
//is it a sccs dir?
- return !"cvs".equals(lowername) && !"cvsroot".equals(lowername); // OK to deploy it then
+ return !"cvs".equals(lowerName) && !"cvsroot".equals(lowerName); // OK to deploy it then
}
// else is it a war file
- if (lowername.endsWith(".war"))
+ if (lowerName.endsWith(".war"))
{
//defer deployment decision to fileChanged()
return true;
}
- // else is it a context XML file
- return lowername.endsWith(".xml");
+ // else is it a context XML file
+ return lowerName.endsWith(".xml");
}
}
diff -Nru jetty9-9.4.38/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java jetty9-9.4.39/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java
--- jetty9-9.4.38/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -19,26 +19,38 @@
package org.eclipse.jetty.deploy.providers;
import java.io.File;
+import java.net.URL;
import java.nio.file.FileSystemException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.eclipse.jetty.deploy.test.XmlConfiguredJetty;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.toolchain.test.jupiter.WorkDir;
import org.eclipse.jetty.toolchain.test.jupiter.WorkDirExtension;
+import org.eclipse.jetty.util.IO;
+import org.eclipse.jetty.webapp.WebAppContext;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.extension.ExtendWith;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
+import static org.junit.jupiter.api.condition.OS.LINUX;
+import static org.junit.jupiter.api.condition.OS.MAC;
-@Disabled("See issue #1200")
@ExtendWith(WorkDirExtension.class)
public class WebAppProviderTest
{
@@ -49,7 +61,8 @@
@BeforeEach
public void setupEnvironment() throws Exception
{
- jetty = new XmlConfiguredJetty(testdir.getEmptyPathDir());
+ Path p = testdir.getEmptyPathDir();
+ jetty = new XmlConfiguredJetty(p);
jetty.addConfiguration("jetty.xml");
jetty.addConfiguration("jetty-http.xml");
jetty.addConfiguration("jetty-deploy-wars.xml");
@@ -86,6 +99,7 @@
jetty.stop();
}
+ @Disabled("See issue #1200")
@Test
public void testStartupContext()
{
@@ -101,7 +115,8 @@
// Test for correct behaviour
assertTrue(hasJettyGeneratedPath(workDir, "foo.war"), "Should have generated directory in work directory: " + workDir);
}
-
+
+ @Disabled("See issue #1200")
@Test
public void testStartupSymlinkContext()
{
@@ -119,7 +134,105 @@
File workDir = jetty.getJettyDir("workish");
assertTrue(hasJettyGeneratedPath(workDir, "bar.war"), "Should have generated directory in work directory: " + workDir);
}
+
+ @Test
+ @EnabledOnOs({LINUX})
+ public void testWebappSymlinkDir() throws Exception
+ {
+ jetty.stop(); //reconfigure jetty
+
+ testdir.ensureEmpty();
+
+ jetty = new XmlConfiguredJetty(testdir.getEmptyPathDir());
+ jetty.addConfiguration("jetty.xml");
+ jetty.addConfiguration("jetty-http.xml");
+ jetty.addConfiguration("jetty-deploy-wars.xml");
+ assumeTrue(symlinkSupported);
+
+ //delete the existing webapps directory
+ File webapps = jetty.getJettyDir("webapps");
+ assertTrue(IO.delete(webapps));
+
+ //make a different directory to contain webapps
+ File x = jetty.getJettyDir("x");
+ Files.createDirectory(x.toPath());
+
+ //Put a webapp into it
+ File srcDir = MavenTestingUtils.getTestResourceDir("webapps");
+ File fooWar = new File(x, "foo.war");
+ IO.copy(new File(srcDir, "foo-webapp-1.war"), fooWar);
+ assertTrue(Files.exists(fooWar.toPath()));
+
+ //make a link from x to webapps
+ Files.createSymbolicLink(jetty.getJettyDir("webapps").toPath(), x.toPath());
+ assertTrue(Files.exists(jetty.getJettyDir("webapps").toPath()));
+
+ jetty.load();
+ jetty.start();
+
+ //only webapp in x should be deployed, not x itself
+ jetty.assertWebAppContextsExists("/foo");
+ }
+
+ @Test
+ @EnabledOnOs({LINUX})
+ public void testBaseDirSymlink() throws Exception
+ {
+ jetty.stop(); //reconfigure jetty
+
+ testdir.ensureEmpty();
+
+ Path realBase = testdir.getEmptyPathDir();
+
+ //set jetty up on the real base
+ jetty = new XmlConfiguredJetty(realBase);
+ jetty.addConfiguration("jetty.xml");
+ jetty.addConfiguration("jetty-http.xml");
+ jetty.addConfiguration("jetty-deploy-wars.xml");
+
+ //Put a webapp into the base
+ jetty.copyWebapp("foo-webapp-1.war", "foo.war");
+
+ //create the jetty structure
+ jetty.load();
+ jetty.start();
+ Path jettyHome = jetty.getJettyHome().toPath();
+
+ jetty.stop();
+
+ //Make a symbolic link to the real base
+ File testsDir = MavenTestingUtils.getTargetTestingDir();
+ Path symlinkBase = Files.createSymbolicLink(testsDir.toPath().resolve("basedirsymlink-" + System.currentTimeMillis()), jettyHome);
+ Map<String, String> properties = new HashMap<>();
+ properties.put("jetty.home", jettyHome.toString());
+ //Start jetty, but this time running from the symlinked base
+ System.setProperty("jetty.home", properties.get("jetty.home"));
+
+ List<URL> configurations = jetty.getConfigurations();
+ Server server = XmlConfiguredJetty.loadConfigurations(configurations, properties);
+
+ try
+ {
+ server.start();
+ HandlerCollection handlers = (HandlerCollection)server.getHandler();
+ Handler[] children = server.getChildHandlersByClass(WebAppContext.class);
+ assertEquals(1, children.length);
+ assertEquals("/foo", ((WebAppContext)children[0]).getContextPath());
+ }
+ finally
+ {
+ server.stop();
+ }
+ }
+
+ private Map<String, String> setupJettyProperties(Path jettyHome)
+ {
+ Map<String, String> properties = new HashMap<>();
+ properties.put("jetty.home", jettyHome.toFile().getAbsolutePath());
+ return properties;
+ }
+
private static boolean hasJettyGeneratedPath(File basedir, String expectedWarFilename)
{
File[] paths = basedir.listFiles();
diff -Nru jetty9-9.4.38/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java jetty9-9.4.39/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java
--- jetty9-9.4.38/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java 2021-03-25 15:36:22.000000000 +0100
@@ -31,6 +31,7 @@
import java.net.UnknownHostException;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -69,6 +70,51 @@
private String _scheme = HttpScheme.HTTP.asString();
private File _jettyHome;
+ public static Server loadConfigurations(List<URL> configurations, Map<String, String> properties)
+ throws Exception
+ {
+ XmlConfiguration last = null;
+ Object[] obj = new Object[configurations.size()];
+
+ // Configure everything
+ for (int i = 0; i < configurations.size(); i++)
+ {
+ URL configURL = configurations.get(i);
+ XmlConfiguration configuration = new XmlConfiguration(configURL);
+ if (last != null)
+ configuration.getIdMap().putAll(last.getIdMap());
+ configuration.getProperties().putAll(properties);
+ obj[i] = configuration.configure();
+ last = configuration;
+ }
+
+ // Test for Server Instance.
+ Server foundServer = null;
+ int serverCount = 0;
+ for (int i = 0; i < configurations.size(); i++)
+ {
+ if (obj[i] instanceof Server)
+ {
+ if (obj[i].equals(foundServer))
+ {
+ // Identical server instance found
+ break;
+ }
+ foundServer = (Server)obj[i];
+ serverCount++;
+ }
+ }
+
+ if (serverCount <= 0)
+ {
+ throw new Exception("Load failed to configure a " + Server.class.getName());
+ }
+
+ assertEquals(1, serverCount, "Server load count");
+
+ return foundServer;
+ }
+
public XmlConfiguredJetty(Path testdir) throws IOException
{
_xmlConfigurations = new ArrayList<>();
@@ -77,11 +123,11 @@
String jettyHomeBase = testdir.toString();
// Ensure we have a new (pristene) directory to work with.
int idx = 0;
- _jettyHome = new File(jettyHomeBase + "#" + idx);
+ _jettyHome = new File(jettyHomeBase + "--" + idx);
while (_jettyHome.exists())
{
idx++;
- _jettyHome = new File(jettyHomeBase + "#" + idx);
+ _jettyHome = new File(jettyHomeBase + "--" + idx);
}
deleteContents(_jettyHome);
// Prepare Jetty.Home (Test) dir
@@ -152,6 +198,11 @@
{
_xmlConfigurations.add(xmlConfig);
}
+
+ public List<URL> getConfigurations()
+ {
+ return Collections.unmodifiableList(_xmlConfigurations);
+ }
public void assertNoWebAppContexts()
{
@@ -325,46 +376,7 @@
public void load() throws Exception
{
- XmlConfiguration last = null;
- Object[] obj = new Object[this._xmlConfigurations.size()];
-
- // Configure everything
- for (int i = 0; i < this._xmlConfigurations.size(); i++)
- {
- URL configURL = this._xmlConfigurations.get(i);
- XmlConfiguration configuration = new XmlConfiguration(configURL);
- if (last != null)
- configuration.getIdMap().putAll(last.getIdMap());
- configuration.getProperties().putAll(_properties);
- obj[i] = configuration.configure();
- last = configuration;
- }
-
- // Test for Server Instance.
- Server foundServer = null;
- int serverCount = 0;
- for (int i = 0; i < this._xmlConfigurations.size(); i++)
- {
- if (obj[i] instanceof Server)
- {
- if (obj[i].equals(foundServer))
- {
- // Identical server instance found
- break;
- }
- foundServer = (Server)obj[i];
- serverCount++;
- }
- }
-
- if (serverCount <= 0)
- {
- throw new Exception("Load failed to configure a " + Server.class.getName());
- }
-
- assertEquals(1, serverCount, "Server load count");
-
- this._server = foundServer;
+ this._server = loadConfigurations(_xmlConfigurations, _properties);
this._server.setStopTimeout(10);
}
diff -Nru jetty9-9.4.38/jetty-distribution/pom.xml jetty9-9.4.39/jetty-distribution/pom.xml
--- jetty9-9.4.38/jetty-distribution/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-distribution/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-distribution</artifactId>
diff -Nru jetty9-9.4.38/jetty-fcgi/fcgi-client/pom.xml jetty9-9.4.39/jetty-fcgi/fcgi-client/pom.xml
--- jetty9-9.4.38/jetty-fcgi/fcgi-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-fcgi/fcgi-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-fcgi/fcgi-server/pom.xml jetty9-9.4.39/jetty-fcgi/fcgi-server/pom.xml
--- jetty9-9.4.38/jetty-fcgi/fcgi-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-fcgi/fcgi-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.fcgi</groupId>
<artifactId>fcgi-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-fcgi/pom.xml jetty9-9.4.39/jetty-fcgi/pom.xml
--- jetty9-9.4.38/jetty-fcgi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-fcgi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-gcloud/jetty-gcloud-session-manager/pom.xml jetty9-9.4.39/jetty-gcloud/jetty-gcloud-session-manager/pom.xml
--- jetty9-9.4.38/jetty-gcloud/jetty-gcloud-session-manager/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-gcloud/jetty-gcloud-session-manager/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.gcloud</groupId>
<artifactId>gcloud-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-gcloud/pom.xml jetty9-9.4.39/jetty-gcloud/pom.xml
--- jetty9-9.4.38/jetty-gcloud/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-gcloud/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-hazelcast/pom.xml jetty9-9.4.39/jetty-hazelcast/pom.xml
--- jetty9-9.4.38/jetty-hazelcast/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-hazelcast/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-embedded.mod jetty9-9.4.39/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-embedded.mod
--- jetty9-9.4.38/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-embedded.mod 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-embedded.mod 2021-03-25 15:36:22.000000000 +0100
@@ -13,14 +13,17 @@
sessions
[files]
-maven://com.hazelcast/hazelcast/3.12.10|lib/hazelcast/hazelcast-3.12.10.jar
+maven://com.hazelcast/hazelcast/${hazelcast.version}|lib/hazelcast/hazelcast-${hazelcast.version}.jar
[xml]
etc/sessions/hazelcast/default.xml
[lib]
lib/jetty-hazelcast-${jetty.version}.jar
-lib/hazelcast/*.jar
+lib/hazelcast/hazelcast-${hazelcast.version}.jar
+
+[ini]
+hazelcast.version?=3.12.10
[license]
Hazelcast is an open source project hosted on Github and released under the Apache 2.0 license.
diff -Nru jetty9-9.4.38/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-remote.mod jetty9-9.4.39/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-remote.mod
--- jetty9-9.4.38/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-remote.mod 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-remote.mod 2021-03-25 15:36:22.000000000 +0100
@@ -13,15 +13,19 @@
sessions
[files]
-maven://com.hazelcast/hazelcast/3.12.10|lib/hazelcast/hazelcast-3.12.10.jar
-maven://com.hazelcast/hazelcast-client/3.12.6|lib/hazelcast/hazelcast-client-3.12.10.jar
+maven://com.hazelcast/hazelcast/${hazelcast.version}|lib/hazelcast/hazelcast-${hazelcast.version}.jar
+maven://com.hazelcast/hazelcast-client/${hazelcast.version}|lib/hazelcast/hazelcast-client-${hazelcast.version}.jar
[xml]
etc/sessions/hazelcast/remote.xml
[lib]
lib/jetty-hazelcast-${jetty.version}.jar
-lib/hazelcast/*.jar
+lib/hazelcast/hazelcast-${hazelcast.version}.jar
+lib/hazelcast/hazelcast-client-${hazelcast.version}.jar
+
+[ini]
+hazelcast.version?=3.12.10
[license]
Hazelcast is an open source project hosted on Github and released under the Apache 2.0 license.
diff -Nru jetty9-9.4.38/jetty-home/pom.xml jetty9-9.4.39/jetty-home/pom.xml
--- jetty9-9.4.38/jetty-home/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-home/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-home</artifactId>
diff -Nru jetty9-9.4.38/jetty-home/src/main/resources/modules/hawtio.mod jetty9-9.4.39/jetty-home/src/main/resources/modules/hawtio.mod
--- jetty9-9.4.38/jetty-home/src/main/resources/modules/hawtio.mod 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-home/src/main/resources/modules/hawtio.mod 2021-03-25 15:36:22.000000000 +0100
@@ -17,7 +17,7 @@
[files]
etc/hawtio/
lib/hawtio/
-https://oss.sonatype.org/content/repositories/public/io/hawt/hawtio-default/1.4.16/hawtio-default-1.4.16.war|lib/hawtio/hawtio.war
+maven://io.hawt/hawtio-default/1.4.16|lib/hawtio/hawtio.war
basehome:modules/hawtio/hawtio.xml|etc/hawtio.xml
[license]
diff -Nru jetty9-9.4.38/jetty-home/src/main/resources/modules/jminix.mod jetty9-9.4.39/jetty-home/src/main/resources/modules/jminix.mod
--- jetty9-9.4.38/jetty-home/src/main/resources/modules/jminix.mod 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-home/src/main/resources/modules/jminix.mod 2021-03-25 15:36:22.000000000 +0100
@@ -18,12 +18,12 @@
[files]
lib/jminix/
maven://org.jminix/jminix/1.1.0|lib/jminix/jminix-1.1.0.jar
-http://maven.restlet.com/org/restlet/org.restlet/1.1.5/org.restlet-1.1.5.jar|lib/jminix/org.restlet-1.1.5.jar
-http://maven.restlet.com/org/restlet/org.restlet.ext.velocity/1.1.5/org.restlet.ext.velocity-1.1.5.jar|lib/jminix/org.restlet.ext.velocity-1.1.5.jar
+https://maven.restlet.talend.com/org/restlet/org.restlet/1.1.5/org.restlet-1.1.5.jar|lib/jminix/org.restlet-1.1.5.jar
+https://maven.restlet.talend.com/org/restlet/org.restlet.ext.velocity/1.1.5/org.restlet.ext.velocity-1.1.5.jar|lib/jminix/org.restlet.ext.velocity-1.1.5.jar
maven://org.apache.velocity/velocity/1.5|lib/jminix/velocity-1.5.jar
maven://oro/oro/2.0.8|lib/jminix/oro-2.0.8.jar
-http://maven.restlet.com/com/noelios/restlet/com.noelios.restlet/1.1.5/com.noelios.restlet-1.1.5.jar|lib/jminix/com.noelios.restlet-1.1.5.jar
-http://maven.restlet.com/com/noelios/restlet/com.noelios.restlet.ext.servlet/1.1.5/com.noelios.restlet.ext.servlet-1.1.5.jar|lib/jminix/com.noelios.restlet.ext.servlet-1.1.5.jar
+https://maven.restlet.talend.com/com/noelios/restlet/com.noelios.restlet/1.1.5/com.noelios.restlet-1.1.5.jar|lib/jminix/com.noelios.restlet-1.1.5.jar
+https://maven.restlet.talend.com/com/noelios/restlet/com.noelios.restlet.ext.servlet/1.1.5/com.noelios.restlet.ext.servlet-1.1.5.jar|lib/jminix/com.noelios.restlet.ext.servlet-1.1.5.jar
maven://net.sf.json-lib/json-lib/2.2.3/jar/jdk15|lib/jminix/json-lib-2.2.3-jdk15.jar
maven://commons-lang/commons-lang/2.4|lib/jminix/commons-lang-2.4.jar
maven://commons-beanutils/commons-beanutils/1.7.0|lib/jminix/commons-beanutils-1.7.0.jar
diff -Nru jetty9-9.4.38/jetty-http/pom.xml jetty9-9.4.39/jetty-http/pom.xml
--- jetty9-9.4.38/jetty-http/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-http</artifactId>
diff -Nru jetty9-9.4.38/jetty-http2/http2-alpn-tests/pom.xml jetty9-9.4.39/jetty-http2/http2-alpn-tests/pom.xml
--- jetty9-9.4.38/jetty-http2/http2-alpn-tests/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/http2-alpn-tests/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http2/http2-client/pom.xml jetty9-9.4.39/jetty-http2/http2-client/pom.xml
--- jetty9-9.4.38/jetty-http2/http2-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/http2-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http2/http2-common/pom.xml jetty9-9.4.39/jetty-http2/http2-common/pom.xml
--- jetty9-9.4.38/jetty-http2/http2-common/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/http2-common/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http2/http2-hpack/pom.xml jetty9-9.4.39/jetty-http2/http2-hpack/pom.xml
--- jetty9-9.4.38/jetty-http2/http2-hpack/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/http2-hpack/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http2/http2-http-client-transport/pom.xml jetty9-9.4.39/jetty-http2/http2-http-client-transport/pom.xml
--- jetty9-9.4.38/jetty-http2/http2-http-client-transport/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/http2-http-client-transport/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http2/http2-server/pom.xml jetty9-9.4.39/jetty-http2/http2-server/pom.xml
--- jetty9-9.4.38/jetty-http2/http2-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/http2-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.http2</groupId>
<artifactId>http2-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http2/pom.xml jetty9-9.4.39/jetty-http2/pom.xml
--- jetty9-9.4.38/jetty-http2/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http2/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-http-spi/pom.xml jetty9-9.4.39/jetty-http-spi/pom.xml
--- jetty9-9.4.38/jetty-http-spi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-http-spi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-http-spi</artifactId>
diff -Nru jetty9-9.4.38/jetty-infinispan/infinispan-common/pom.xml jetty9-9.4.39/jetty-infinispan/infinispan-common/pom.xml
--- jetty9-9.4.38/jetty-infinispan/infinispan-common/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/infinispan-common/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-common</artifactId>
diff -Nru jetty9-9.4.38/jetty-infinispan/infinispan-embedded/pom.xml jetty9-9.4.39/jetty-infinispan/infinispan-embedded/pom.xml
--- jetty9-9.4.38/jetty-infinispan/infinispan-embedded/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/infinispan-embedded/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-embedded</artifactId>
diff -Nru jetty9-9.4.38/jetty-infinispan/infinispan-embedded-query/pom.xml jetty9-9.4.39/jetty-infinispan/infinispan-embedded-query/pom.xml
--- jetty9-9.4.38/jetty-infinispan/infinispan-embedded-query/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/infinispan-embedded-query/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-embedded-query</artifactId>
diff -Nru jetty9-9.4.38/jetty-infinispan/infinispan-remote/pom.xml jetty9-9.4.39/jetty-infinispan/infinispan-remote/pom.xml
--- jetty9-9.4.38/jetty-infinispan/infinispan-remote/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/infinispan-remote/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-remote</artifactId>
diff -Nru jetty9-9.4.38/jetty-infinispan/infinispan-remote-query/pom.xml jetty9-9.4.39/jetty-infinispan/infinispan-remote-query/pom.xml
--- jetty9-9.4.38/jetty-infinispan/infinispan-remote-query/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/infinispan-remote-query/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>infinispan-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>infinispan-remote-query</artifactId>
@@ -138,5 +138,10 @@
<artifactId>testcontainers</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff -Nru jetty9-9.4.38/jetty-infinispan/infinispan-remote-query/src/test/java/org/eclipse/jetty/server/session/infinispan/RemoteQueryManagerTest.java jetty9-9.4.39/jetty-infinispan/infinispan-remote-query/src/test/java/org/eclipse/jetty/server/session/infinispan/RemoteQueryManagerTest.java
--- jetty9-9.4.38/jetty-infinispan/infinispan-remote-query/src/test/java/org/eclipse/jetty/server/session/infinispan/RemoteQueryManagerTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/infinispan-remote-query/src/test/java/org/eclipse/jetty/server/session/infinispan/RemoteQueryManagerTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -49,11 +49,13 @@
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
+import org.testcontainers.junit.jupiter.Testcontainers;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
+@Testcontainers(disabledWithoutDocker = true)
public class RemoteQueryManagerTest
{
public static final String DEFAULT_CACHE_NAME = "remote-session-test";
diff -Nru jetty9-9.4.38/jetty-infinispan/pom.xml jetty9-9.4.39/jetty-infinispan/pom.xml
--- jetty9-9.4.38/jetty-infinispan/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-infinispan/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-io/pom.xml jetty9-9.4.39/jetty-io/pom.xml
--- jetty9-9.4.38/jetty-io/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-io/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-io</artifactId>
diff -Nru jetty9-9.4.38/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java jetty9-9.4.39/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java
--- jetty9-9.4.38/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java 2021-03-25 15:36:22.000000000 +0100
@@ -729,8 +729,15 @@
return filled = -1;
case BUFFER_UNDERFLOW:
+ if (BufferUtil.space(_encryptedInput) == 0)
+ {
+ BufferUtil.clear(_encryptedInput);
+ throw new SSLHandshakeException("Encrypted buffer max length exceeded");
+ }
+
if (netFilled > 0)
continue; // try filling some more
+
_underflown = true;
if (netFilled < 0 && _sslEngine.getUseClientMode())
{
@@ -739,7 +746,7 @@
{
Throwable handshakeFailure = new SSLHandshakeException("Abruptly closed by peer");
if (closeFailure != null)
- handshakeFailure.initCause(closeFailure);
+ handshakeFailure.addSuppressed(closeFailure);
throw handshakeFailure;
}
return filled = -1;
diff -Nru jetty9-9.4.38/jetty-jaas/pom.xml jetty9-9.4.39/jetty-jaas/pom.xml
--- jetty9-9.4.38/jetty-jaas/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-jaas/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jaas</artifactId>
diff -Nru jetty9-9.4.38/jetty-jaspi/pom.xml jetty9-9.4.39/jetty-jaspi/pom.xml
--- jetty9-9.4.38/jetty-jaspi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-jaspi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-jmh/pom.xml jetty9-9.4.39/jetty-jmh/pom.xml
--- jetty9-9.4.38/jetty-jmh/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-jmh/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-jmx/pom.xml jetty9-9.4.39/jetty-jmx/pom.xml
--- jetty9-9.4.38/jetty-jmx/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-jmx/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jmx</artifactId>
diff -Nru jetty9-9.4.38/jetty-jndi/pom.xml jetty9-9.4.39/jetty-jndi/pom.xml
--- jetty9-9.4.38/jetty-jndi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-jndi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jndi</artifactId>
diff -Nru jetty9-9.4.38/jetty-jspc-maven-plugin/pom.xml jetty9-9.4.39/jetty-jspc-maven-plugin/pom.xml
--- jetty9-9.4.38/jetty-jspc-maven-plugin/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-jspc-maven-plugin/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-jspc-maven-plugin</artifactId>
diff -Nru jetty9-9.4.38/jetty-maven-plugin/pom.xml jetty9-9.4.39/jetty-maven-plugin/pom.xml
--- jetty9-9.4.38/jetty-maven-plugin/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-maven-plugin/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-maven-plugin</artifactId>
diff -Nru jetty9-9.4.38/jetty-memcached/jetty-memcached-sessions/pom.xml jetty9-9.4.39/jetty-memcached/jetty-memcached-sessions/pom.xml
--- jetty9-9.4.38/jetty-memcached/jetty-memcached-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-memcached/jetty-memcached-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.memcached</groupId>
<artifactId>memcached-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-memcached/pom.xml jetty9-9.4.39/jetty-memcached/pom.xml
--- jetty9-9.4.38/jetty-memcached/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-memcached/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-nosql/pom.xml jetty9-9.4.39/jetty-nosql/pom.xml
--- jetty9-9.4.38/jetty-nosql/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-nosql/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-nosql</artifactId>
diff -Nru jetty9-9.4.38/jetty-openid/pom.xml jetty9-9.4.39/jetty-openid/pom.xml
--- jetty9-9.4.38/jetty-openid/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-openid/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-osgi/jetty-osgi-alpn/pom.xml jetty9-9.4.39/jetty-osgi/jetty-osgi-alpn/pom.xml
--- jetty9-9.4.38/jetty-osgi/jetty-osgi-alpn/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/jetty-osgi-alpn/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-alpn</artifactId>
diff -Nru jetty9-9.4.38/jetty-osgi/jetty-osgi-boot/pom.xml jetty9-9.4.39/jetty-osgi/jetty-osgi-boot/pom.xml
--- jetty9-9.4.38/jetty-osgi/jetty-osgi-boot/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/jetty-osgi-boot/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-boot</artifactId>
diff -Nru jetty9-9.4.38/jetty-osgi/jetty-osgi-boot-jsp/pom.xml jetty9-9.4.39/jetty-osgi/jetty-osgi-boot-jsp/pom.xml
--- jetty9-9.4.38/jetty-osgi/jetty-osgi-boot-jsp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/jetty-osgi-boot-jsp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-osgi-boot-jsp</artifactId>
diff -Nru jetty9-9.4.38/jetty-osgi/jetty-osgi-boot-warurl/pom.xml jetty9-9.4.39/jetty-osgi/jetty-osgi-boot-warurl/pom.xml
--- jetty9-9.4.38/jetty-osgi/jetty-osgi-boot-warurl/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/jetty-osgi-boot-warurl/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-osgi/jetty-osgi-httpservice/pom.xml jetty9-9.4.39/jetty-osgi/jetty-osgi-httpservice/pom.xml
--- jetty9-9.4.38/jetty-osgi/jetty-osgi-httpservice/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/jetty-osgi-httpservice/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-httpservice</artifactId>
diff -Nru jetty9-9.4.38/jetty-osgi/pom.xml jetty9-9.4.39/jetty-osgi/pom.xml
--- jetty9-9.4.38/jetty-osgi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-osgi/test-jetty-osgi/pom.xml jetty9-9.4.39/jetty-osgi/test-jetty-osgi/pom.xml
--- jetty9-9.4.38/jetty-osgi/test-jetty-osgi/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/test-jetty-osgi/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-osgi/test-jetty-osgi-context/pom.xml jetty9-9.4.39/jetty-osgi/test-jetty-osgi-context/pom.xml
--- jetty9-9.4.38/jetty-osgi/test-jetty-osgi-context/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/test-jetty-osgi-context/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-context</artifactId>
diff -Nru jetty9-9.4.38/jetty-osgi/test-jetty-osgi-fragment/pom.xml jetty9-9.4.39/jetty-osgi/test-jetty-osgi-fragment/pom.xml
--- jetty9-9.4.38/jetty-osgi/test-jetty-osgi-fragment/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/test-jetty-osgi-fragment/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-osgi/test-jetty-osgi-server/pom.xml jetty9-9.4.39/jetty-osgi/test-jetty-osgi-server/pom.xml
--- jetty9-9.4.38/jetty-osgi/test-jetty-osgi-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/test-jetty-osgi-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-server</artifactId>
diff -Nru jetty9-9.4.38/jetty-osgi/test-jetty-osgi-webapp/pom.xml jetty9-9.4.39/jetty-osgi/test-jetty-osgi-webapp/pom.xml
--- jetty9-9.4.38/jetty-osgi/test-jetty-osgi-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/test-jetty-osgi-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-osgi/test-jetty-osgi-webapp-resources/pom.xml jetty9-9.4.39/jetty-osgi/test-jetty-osgi-webapp-resources/pom.xml
--- jetty9-9.4.38/jetty-osgi/test-jetty-osgi-webapp-resources/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-osgi/test-jetty-osgi-webapp-resources/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.osgi</groupId>
<artifactId>jetty-osgi-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jetty-osgi-webapp-resources</artifactId>
diff -Nru jetty9-9.4.38/jetty-plus/pom.xml jetty9-9.4.39/jetty-plus/pom.xml
--- jetty9-9.4.38/jetty-plus/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-plus/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-plus</artifactId>
diff -Nru jetty9-9.4.38/jetty-proxy/pom.xml jetty9-9.4.39/jetty-proxy/pom.xml
--- jetty9-9.4.38/jetty-proxy/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-proxy/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-proxy</artifactId>
diff -Nru jetty9-9.4.38/jetty-quickstart/pom.xml jetty9-9.4.39/jetty-quickstart/pom.xml
--- jetty9-9.4.38/jetty-quickstart/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-quickstart/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty</groupId>
diff -Nru jetty9-9.4.38/jetty-rewrite/pom.xml jetty9-9.4.39/jetty-rewrite/pom.xml
--- jetty9-9.4.38/jetty-rewrite/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-rewrite/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-rewrite</artifactId>
diff -Nru jetty9-9.4.38/jetty-runner/pom.xml jetty9-9.4.39/jetty-runner/pom.xml
--- jetty9-9.4.38/jetty-runner/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-runner/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-runner</artifactId>
diff -Nru jetty9-9.4.38/jetty-security/pom.xml jetty9-9.4.39/jetty-security/pom.xml
--- jetty9-9.4.38/jetty-security/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-security/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-security</artifactId>
diff -Nru jetty9-9.4.38/jetty-server/pom.xml jetty9-9.4.39/jetty-server/pom.xml
--- jetty9-9.4.38/jetty-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-server</artifactId>
diff -Nru jetty9-9.4.38/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java jetty9-9.4.39/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
--- jetty9-9.4.38/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java 2021-03-25 15:36:22.000000000 +0100
@@ -1824,7 +1824,8 @@
setMethod(request.getMethod());
HttpURI uri = request.getURI();
- if (uri.isAmbiguous())
+ boolean ambiguous = uri.isAmbiguous();
+ if (ambiguous)
{
// replaced in jetty-10 with URICompliance from the HttpConfiguration
Connection connection = _channel == null ? null : _channel.getConnection();
@@ -1852,6 +1853,13 @@
else if (encoded.startsWith("/"))
{
path = (encoded.length() == 1) ? "/" : uri.getDecodedPath();
+
+ // Strictly speaking if a URI is legal and encodes ambiguous segments, then they should be
+ // reflected in the decoded string version. However, previous behaviour was to always normalize
+ // so we will continue to do so. If an application wishes to see ambiguous URIs, then they can look
+ // at the encoded form of the URI
+ if (ambiguous)
+ path = URIUtil.canonicalPath(path);
}
else if ("*".equals(encoded) || HttpMethod.CONNECT.is(getMethod()))
{
diff -Nru jetty9-9.4.38/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java jetty9-9.4.39/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java
--- jetty9-9.4.38/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java 2021-03-25 15:36:22.000000000 +0100
@@ -1667,29 +1667,56 @@
if (LOG.isDebugEnabled())
LOG.debug("Got Session ID {} from cookie {}", id, sessionCookie);
- HttpSession s = getHttpSession(id);
-
- if (requestedSessionId == null)
- {
- //no previous id, always accept this one
- requestedSessionId = id;
- session = s;
- }
- else if (requestedSessionId.equals(id))
- {
- //really a bad request, but will forgive the duplication
- }
- else if (session == null || !isValid(session))
+ if (session == null)
{
- //no previous session or invalid, accept this one
- requestedSessionId = id;
- session = s;
+ //we currently do not have a session selected, use this one if it is valid
+ HttpSession s = getHttpSession(id);
+ if (s != null && isValid(s))
+ {
+ //associate it with the request so its reference count is decremented as the
+ //request exits
+ requestedSessionId = id;
+ session = s;
+ baseRequest.enterSession(session);
+ baseRequest.setSession(session);
+
+ if (LOG.isDebugEnabled())
+ LOG.debug("Selected session {}", session);
+ }
+ else
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("No session found for session cookie id {}", id);
+
+ //if we don't have a valid session id yet, just choose the current id
+ if (requestedSessionId == null)
+ requestedSessionId = id;
+ }
}
else
{
- //previous session is valid, use it unless both valid
- if (s != null && isValid(s))
- throw new BadMessageException("Duplicate valid session cookies: " + requestedSessionId + "," + id);
+ //we currently have a valid session selected. We will throw an error
+ //if there is a _different_ valid session id cookie. Duplicate ids, or
+ //invalid session ids are ignored
+ if (!session.getId().equals(getSessionIdManager().getId(id)))
+ {
+ //load the session to see if it is valid or not
+ HttpSession s = getHttpSession(id);
+ if (s != null && isValid(s))
+ {
+ //associate it with the request so its reference count is decremented as the
+ //request exits
+ baseRequest.enterSession(s);
+ if (LOG.isDebugEnabled())
+ LOG.debug("Multiple different valid session ids: {}, {}", requestedSessionId, id);
+ throw new BadMessageException("Duplicate valid session cookies: " + requestedSessionId + " ," + id);
+ }
+ }
+ else
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("Duplicate valid session cookie id: {}", id);
+ }
}
}
}
@@ -1718,24 +1745,22 @@
requestedSessionId = uri.substring(s, i);
requestedSessionIdFromCookie = false;
+
if (LOG.isDebugEnabled())
LOG.debug("Got Session ID {} from URL", requestedSessionId);
+
session = getHttpSession(requestedSessionId);
+ if (session != null && isValid(session))
+ {
+ baseRequest.enterSession(session); //request enters this session for first time
+ baseRequest.setSession(session); //associate the session with the request
+ }
}
}
}
baseRequest.setRequestedSessionId(requestedSessionId);
baseRequest.setRequestedSessionIdFromCookie(requestedSessionId != null && requestedSessionIdFromCookie);
-
- if (requestedSessionId != null)
- {
- if (session != null && isValid(session))
- {
- baseRequest.enterSession(session); //request enters this session for first time
- baseRequest.setSession(session); //associate the session with the request
- }
- }
}
/**
diff -Nru jetty9-9.4.38/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java jetty9-9.4.39/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java
--- jetty9-9.4.38/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -32,6 +32,7 @@
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.function.Consumer;
+import java.util.stream.Collectors;
import javax.net.ssl.SNIHostName;
import javax.net.ssl.SNIServerName;
import javax.net.ssl.SSLEngine;
@@ -61,6 +62,7 @@
import org.eclipse.jetty.util.IO;
import org.eclipse.jetty.util.ssl.SniX509ExtendedKeyManager;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.ssl.X509;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -189,7 +191,27 @@
@Test
public void testSNIConnect() throws Exception
{
- start("src/test/resources/keystore_sni.p12");
+ start(ssl ->
+ {
+ ssl.setKeyStorePath("src/test/resources/keystore_sni.p12");
+ ssl.setSNISelector((keyType, issuers, session, sniHost, certificates) ->
+ {
+ // Make sure the *.domain.com comes before sub.domain.com
+ // to test that we prefer more specific domains.
+ List<X509> sortedCertificates = certificates.stream()
+ // As sorted() sorts ascending, make *.domain.com the smallest.
+ .sorted((x509a, x509b) ->
+ {
+ if (x509a.matches("domain.com"))
+ return -1;
+ if (x509b.matches("domain.com"))
+ return 1;
+ return 0;
+ })
+ .collect(Collectors.toList());
+ return ssl.sniSelect(keyType, issuers, session, sniHost, sortedCertificates);
+ });
+ });
String response = getResponse("jetty.eclipse.org", "jetty.eclipse.org");
assertThat(response, Matchers.containsString("X-HOST: jetty.eclipse.org"));
@@ -200,6 +222,9 @@
response = getResponse("foo.domain.com", "*.domain.com");
assertThat(response, Matchers.containsString("X-HOST: foo.domain.com"));
+ response = getResponse("sub.domain.com", "sub.domain.com");
+ assertThat(response, Matchers.containsString("X-HOST: sub.domain.com"));
+
response = getResponse("m.san.com", "san example");
assertThat(response, Matchers.containsString("X-HOST: m.san.com"));
diff -Nru jetty9-9.4.38/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java jetty9-9.4.39/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java
--- jetty9-9.4.38/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -34,19 +34,31 @@
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.URL;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.concurrent.atomic.AtomicLong;
+import javax.net.SocketFactory;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLEngineResult;
+import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.eclipse.jetty.io.EndPoint;
+import org.eclipse.jetty.io.ssl.SslConnection;
+import org.eclipse.jetty.server.ConnectionFactory;
+import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
import org.eclipse.jetty.util.IO;
@@ -59,6 +71,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThan;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -106,12 +119,13 @@
private Server server;
private ServerConnector connector;
+ private SslContextFactory.Server sslContextFactory;
@BeforeEach
public void startServer() throws Exception
{
String keystore = MavenTestingUtils.getTestResourceFile("keystore").getAbsolutePath();
- SslContextFactory sslContextFactory = new SslContextFactory.Server();
+ sslContextFactory = new SslContextFactory.Server();
sslContextFactory.setKeyStorePath(keystore);
sslContextFactory.setKeyStorePassword("storepwd");
sslContextFactory.setKeyManagerPassword("keypwd");
@@ -192,6 +206,61 @@
}
@Test
+ public void testInvalidLargeTLSFrame() throws Exception
+ {
+ AtomicLong unwraps = new AtomicLong();
+ ConnectionFactory http = connector.getConnectionFactory(HttpConnectionFactory.class);
+ ConnectionFactory ssl = new SslConnectionFactory(sslContextFactory, http.getProtocol())
+ {
+ @Override
+ protected SslConnection newSslConnection(Connector connector, EndPoint endPoint, SSLEngine engine)
+ {
+ return new SslConnection(connector.getByteBufferPool(), connector.getExecutor(), endPoint, engine, isDirectBuffersForEncryption(), isDirectBuffersForDecryption())
+ {
+ @Override
+ protected SSLEngineResult unwrap(SSLEngine sslEngine, ByteBuffer input, ByteBuffer output) throws SSLException
+ {
+ unwraps.incrementAndGet();
+ return super.unwrap(sslEngine, input, output);
+ }
+ };
+ }
+ };
+ ServerConnector tlsConnector = new ServerConnector(server, 1, 1, ssl, http);
+ server.addConnector(tlsConnector);
+ server.setHandler(new HelloWorldHandler());
+ server.start();
+
+ // Create raw TLS record.
+ byte[] bytes = new byte[20005];
+ Arrays.fill(bytes, (byte)1);
+
+ bytes[0] = 22; // record type
+ bytes[1] = 3; // major version
+ bytes[2] = 3; // minor version
+ bytes[3] = 78; // record length 2 bytes / 0x4E20 / decimal 20,000
+ bytes[4] = 32; // record length
+ bytes[5] = 1; // message type
+ bytes[6] = 0; // message length 3 bytes / 0x004E17 / decimal 19,991
+ bytes[7] = 78;
+ bytes[8] = 23;
+
+ SocketFactory socketFactory = SocketFactory.getDefault();
+ try (Socket client = socketFactory.createSocket("localhost", tlsConnector.getLocalPort()))
+ {
+ client.getOutputStream().write(bytes);
+
+ // Sleep to see if the server spins.
+ Thread.sleep(1000);
+ assertThat(unwraps.get(), lessThan(128L));
+
+ // Read until -1 or read timeout.
+ client.setSoTimeout(1000);
+ IO.readBytes(client.getInputStream());
+ }
+ }
+
+ @Test
public void testRequestJettyHttps() throws Exception
{
server.setHandler(new HelloWorldHandler());
Binary files /tmp/xNV5seqXro/jetty9-9.4.38/jetty-server/src/test/resources/keystore_sni.p12 and /tmp/7J4C5W4awH/jetty9-9.4.39/jetty-server/src/test/resources/keystore_sni.p12 differ
diff -Nru jetty9-9.4.38/jetty-servlet/pom.xml jetty9-9.4.39/jetty-servlet/pom.xml
--- jetty9-9.4.38/jetty-servlet/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-servlet/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-servlet</artifactId>
diff -Nru jetty9-9.4.38/jetty-servlets/pom.xml jetty9-9.4.39/jetty-servlets/pom.xml
--- jetty9-9.4.38/jetty-servlets/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-servlets/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-servlets</artifactId>
diff -Nru jetty9-9.4.38/jetty-spring/pom.xml jetty9-9.4.39/jetty-spring/pom.xml
--- jetty9-9.4.38/jetty-spring/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-spring/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-spring</artifactId>
diff -Nru jetty9-9.4.38/jetty-start/pom.xml jetty9-9.4.39/jetty-start/pom.xml
--- jetty9-9.4.38/jetty-start/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-start/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-start</artifactId>
diff -Nru jetty9-9.4.38/jetty-unixsocket/pom.xml jetty9-9.4.39/jetty-unixsocket/pom.xml
--- jetty9-9.4.38/jetty-unixsocket/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-unixsocket/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-unixsocket</artifactId>
diff -Nru jetty9-9.4.38/jetty-util/pom.xml jetty9-9.4.39/jetty-util/pom.xml
--- jetty9-9.4.38/jetty-util/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-util</artifactId>
diff -Nru jetty9-9.4.38/jetty-util/src/main/config/modules/log4j2-api.mod jetty9-9.4.39/jetty-util/src/main/config/modules/log4j2-api.mod
--- jetty9-9.4.38/jetty-util/src/main/config/modules/log4j2-api.mod 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/config/modules/log4j2-api.mod 2021-03-25 15:36:22.000000000 +0100
@@ -23,6 +23,6 @@
http://www.apache.org/licenses/LICENSE-2.0.html
[ini]
-log4j2.version?=2.11.2
+log4j2.version?=2.14.0
disruptor.version=3.4.2
jetty.webapp.addServerClasses+=,${jetty.base.uri}/lib/log4j2/
diff -Nru jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/ModuleLocation.java jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/ModuleLocation.java
--- jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/ModuleLocation.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/ModuleLocation.java 2021-03-25 15:36:22.000000000 +0100
@@ -23,6 +23,7 @@
import java.lang.reflect.Method;
import java.net.URI;
import java.util.Optional;
+import java.util.function.Function;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
@@ -53,7 +54,7 @@
*
* In Jetty 10, this entire class can be moved to direct calls to java.lang.Module in TypeUtil.getModuleLocation()
*/
-class ModuleLocation
+class ModuleLocation implements Function<Class<?>, URI>
{
private static final Logger LOG = Log.getLogger(ModuleLocation.class);
@@ -100,7 +101,8 @@
}
}
- public URI getModuleLocation(Class<?> clazz)
+ @Override
+ public URI apply(Class<?> clazz)
{
try
{
diff -Nru jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java
--- jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java 2021-03-25 15:36:22.000000000 +0100
@@ -29,7 +29,9 @@
import java.net.URLConnection;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
+import java.nio.file.Files;
import java.nio.file.InvalidPathException;
+import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.security.Permission;
@@ -184,6 +186,30 @@
_alias = checkFileAlias(_uri, _file);
}
+ @Override
+ public boolean isSame(Resource resource)
+ {
+ try
+ {
+ if (resource instanceof PathResource)
+ {
+ Path path = ((PathResource)resource).getPath();
+ return Files.isSameFile(getFile().toPath(), path);
+ }
+ if (resource instanceof FileResource)
+ {
+ Path path = ((FileResource)resource).getFile().toPath();
+ return Files.isSameFile(getFile().toPath(), path);
+ }
+ }
+ catch (IOException e)
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("ignored", e);
+ }
+ return false;
+ }
+
private static URI normalizeURI(File file, URI uri) throws URISyntaxException
{
String u = uri.toASCIIString();
diff -Nru jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java
--- jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java 2021-03-25 15:36:22.000000000 +0100
@@ -337,6 +337,30 @@
}
@Override
+ public boolean isSame(Resource resource)
+ {
+ try
+ {
+ if (resource instanceof PathResource)
+ {
+ Path path = ((PathResource)resource).getPath();
+ return Files.isSameFile(getPath(), path);
+ }
+ if (resource instanceof FileResource)
+ {
+ Path path = ((FileResource)resource).getFile().toPath();
+ return Files.isSameFile(getPath(), path);
+ }
+ }
+ catch (IOException e)
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("ignored", e);
+ }
+ return false;
+ }
+
+ @Override
public Resource addPath(final String subpath) throws IOException
{
String cpath = URIUtil.canonicalPath(subpath);
diff -Nru jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java
--- jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java 2021-03-25 15:36:22.000000000 +0100
@@ -312,6 +312,18 @@
public abstract boolean isContainedIn(Resource r) throws MalformedURLException;
/**
+ * Return true if the passed Resource represents the same resource as the Resource.
+ * For many resource types, this is equivalent to {@link #equals(Object)}, however
+ * for resources types that support aliasing, this maybe some other check (e.g. {@link java.nio.file.Files#isSameFile(Path, Path)}).
+ * @param resource The resource to check
+ * @return true if the passed resource represents the same resource.
+ */
+ public boolean isSame(Resource resource)
+ {
+ return equals(resource);
+ }
+
+ /**
* Release any temporary resources held by the resource.
*
* @deprecated use {@link #close()}
diff -Nru jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java
--- jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java 2021-03-25 15:36:22.000000000 +0100
@@ -54,6 +54,7 @@
import java.util.Set;
import java.util.function.Consumer;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import javax.net.ssl.CertPathTrustManagerParameters;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.KeyManager;
@@ -63,7 +64,6 @@
import javax.net.ssl.SNIServerName;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
-import javax.net.ssl.SSLHandshakeException;
import javax.net.ssl.SSLParameters;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLServerSocket;
@@ -2292,7 +2292,7 @@
}
@Override
- public String sniSelect(String keyType, Principal[] issuers, SSLSession session, String sniHost, Collection<X509> certificates) throws SSLHandshakeException
+ public String sniSelect(String keyType, Principal[] issuers, SSLSession session, String sniHost, Collection<X509> certificates)
{
if (sniHost == null)
{
@@ -2301,12 +2301,24 @@
}
else
{
- // Match the SNI host, or let the JDK decide unless unmatched SNIs are rejected.
- return certificates.stream()
+ // Match the SNI host.
+ List<X509> matching = certificates.stream()
.filter(x509 -> x509.matches(sniHost))
- .findFirst()
+ .collect(Collectors.toList());
+
+ // No match, let the JDK decide unless unmatched SNIs are rejected.
+ if (matching.isEmpty())
+ return isSniRequired() ? null : SniX509ExtendedKeyManager.SniSelector.DELEGATE;
+
+ String alias = matching.get(0).getAlias();
+ if (matching.size() == 1)
+ return alias;
+
+ // Prefer strict matches over wildcard matches.
+ return matching.stream()
+ .min(Comparator.comparingInt(cert -> cert.getWilds().size()))
.map(X509::getAlias)
- .orElse(_sniRequired ? null : SniX509ExtendedKeyManager.SniSelector.DELEGATE);
+ .orElse(alias);
}
}
diff -Nru jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java
--- jetty9-9.4.38/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java 2021-03-25 15:36:22.000000000 +0100
@@ -19,9 +19,6 @@
package org.eclipse.jetty.util;
import java.io.IOException;
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -38,12 +35,11 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.Function;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
-import static java.lang.invoke.MethodType.methodType;
-
/**
* TYPE Utilities.
* Provides various static utility methods for manipulating types and their
@@ -177,38 +173,32 @@
}
}
- private static final MethodHandle[] LOCATION_METHODS;
- private static final ModuleLocation MODULE_LOCATION;
+ private static final List<Function<Class<?>, URI>> LOCATION_METHODS = new ArrayList<>();
+ private static final Function<Class<?>, URI> MODULE_LOCATION;
static
{
- List<MethodHandle> locationMethods = new ArrayList<>();
-
- MethodHandles.Lookup lookup = MethodHandles.lookup();
- MethodType type = methodType(URI.class, Class.class);
-
+ // Lookup order in LOCATION_METHODS is important.
+ LOCATION_METHODS.add(TypeUtil::getCodeSourceLocation);
+ Function<Class<?>, URI> moduleFunc = null;
try
{
- locationMethods.add(lookup.findStatic(TypeUtil.class, "getCodeSourceLocation", type));
- ModuleLocation moduleLocation = null;
- try
+ Class<?> clazzModuleLocation = TypeUtil.class.getClassLoader().loadClass(TypeUtil.class.getPackage().getName() + ".ModuleLocation");
+ Object obj = clazzModuleLocation.getConstructor().newInstance();
+ if (obj instanceof Function)
{
- moduleLocation = new ModuleLocation();
- locationMethods.add(lookup.findStatic(TypeUtil.class, "getModuleLocation", type));
+ //noinspection unchecked
+ moduleFunc = (Function<Class<?>, URI>)obj;
+ LOCATION_METHODS.add(moduleFunc);
}
- catch (UnsupportedOperationException e)
- {
- LOG.debug("JVM Runtime does not support Modules");
- }
- MODULE_LOCATION = moduleLocation;
- locationMethods.add(lookup.findStatic(TypeUtil.class, "getClassLoaderLocation", type));
- locationMethods.add(lookup.findStatic(TypeUtil.class, "getSystemClassLoaderLocation", type));
- LOCATION_METHODS = locationMethods.toArray(new MethodHandle[0]);
}
- catch (Exception e)
+ catch (Throwable t)
{
- throw new RuntimeException("Unable to establish Location Lookup Handles", e);
+ LOG.debug("This JVM Runtime does not support Modules, disabling Jetty internal support");
}
+ MODULE_LOCATION = moduleFunc;
+ LOCATION_METHODS.add(TypeUtil::getClassLoaderLocation);
+ LOCATION_METHODS.add(TypeUtil::getSystemClassLoaderLocation);
}
/**
@@ -627,13 +617,11 @@
*/
public static URI getLocationOfClass(Class<?> clazz)
{
- URI location;
-
- for (MethodHandle locationMethod : LOCATION_METHODS)
+ for (Function<Class<?>, URI> locationFunction : LOCATION_METHODS)
{
try
{
- location = (URI)locationMethod.invoke(clazz);
+ URI location = locationFunction.apply(clazz);
if (location != null)
{
return location;
@@ -723,7 +711,7 @@
// In Jetty 10, this method can be implemented directly, without reflection
if (MODULE_LOCATION != null)
{
- return MODULE_LOCATION.getModuleLocation(clazz);
+ return MODULE_LOCATION.apply(clazz);
}
return null;
}
diff -Nru jetty9-9.4.38/jetty-util/src/test/java/org/eclipse/jetty/util/resource/PathResourceTest.java jetty9-9.4.39/jetty-util/src/test/java/org/eclipse/jetty/util/resource/PathResourceTest.java
--- jetty9-9.4.38/jetty-util/src/test/java/org/eclipse/jetty/util/resource/PathResourceTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util/src/test/java/org/eclipse/jetty/util/resource/PathResourceTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -32,6 +32,7 @@
import java.util.Map;
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
+import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -146,4 +147,20 @@
File file = resource.getFile();
assertThat("File for default FileSystem", file, is(exampleJar.toFile()));
}
+
+ @Test
+ public void testSame() throws Exception
+ {
+ Path rpath = MavenTestingUtils.getTestResourcePathFile("resource.txt");
+ Path epath = MavenTestingUtils.getTestResourcePathFile("example.jar");
+ PathResource rPathResource = new PathResource(rpath);
+ FileResource rFileResource = new FileResource(rpath.toFile());
+ PathResource ePathResource = new PathResource(epath);
+ FileResource eFileResource = new FileResource(epath.toFile());
+
+ assertThat(rPathResource.isSame(rPathResource), Matchers.is(true));
+ assertThat(rPathResource.isSame(rFileResource), Matchers.is(true));
+ assertThat(rPathResource.isSame(ePathResource), Matchers.is(false));
+ assertThat(rPathResource.isSame(eFileResource), Matchers.is(false));
+ }
}
diff -Nru jetty9-9.4.38/jetty-util-ajax/pom.xml jetty9-9.4.39/jetty-util-ajax/pom.xml
--- jetty9-9.4.38/jetty-util-ajax/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-util-ajax/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-util-ajax</artifactId>
diff -Nru jetty9-9.4.38/jetty-webapp/pom.xml jetty9-9.4.39/jetty-webapp/pom.xml
--- jetty9-9.4.38/jetty-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-webapp</artifactId>
diff -Nru jetty9-9.4.38/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java jetty9-9.4.39/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java
--- jetty9-9.4.38/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -33,8 +33,10 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import org.eclipse.jetty.http.HttpCompliance;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.http.HttpTester;
+import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.LocalConnector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
@@ -248,6 +250,42 @@
}
@Test
+ public void testProtectedTarget() throws Exception
+ {
+ Server server = newServer();
+ server.getConnectors()[0].getConnectionFactory(HttpConnectionFactory.class).setHttpCompliance(HttpCompliance.LEGACY);
+
+ HandlerList handlers = new HandlerList();
+ ContextHandlerCollection contexts = new ContextHandlerCollection();
+ WebAppContext context = new WebAppContext();
+ Path testWebapp = MavenTestingUtils.getProjectDirPath("src/test/webapp");
+ context.setBaseResource(new PathResource(testWebapp));
+ context.setContextPath("/");
+ server.setHandler(handlers);
+ handlers.addHandler(contexts);
+ contexts.addHandler(context);
+
+ LocalConnector connector = new LocalConnector(server);
+ server.addConnector(connector);
+
+ server.start();
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.OK_200));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /%2e/%2e/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.OK_200));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /foo/%2e%2e/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.OK_200));
+
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /WEB-INF HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /WEB-INF/ HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /WEB-INF/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /web-inf/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /%2e/WEB-INF/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /%2e/%2e/WEB-INF/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /foo/%2e%2e/WEB-INF/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /%2E/WEB-INF/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET //WEB-INF/test.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ assertThat(HttpTester.parseResponse(connector.getResponse("GET /WEB-INF%2ftest.xml HTTP/1.1\r\nHost: localhost:8080\r\nConnection: close\r\n\r\n")).getStatus(), is(HttpStatus.NOT_FOUND_404));
+ }
+
+ @Test
public void testNullPath() throws Exception
{
Server server = newServer();
diff -Nru jetty9-9.4.38/jetty-webapp/src/test/webapp/test.xml jetty9-9.4.39/jetty-webapp/src/test/webapp/test.xml
--- jetty9-9.4.38/jetty-webapp/src/test/webapp/test.xml 1970-01-01 01:00:00.000000000 +0100
+++ jetty9-9.4.39/jetty-webapp/src/test/webapp/test.xml 2021-03-25 15:36:22.000000000 +0100
@@ -0,0 +1 @@
+test
diff -Nru jetty9-9.4.38/jetty-webapp/src/test/webapp/WEB-INF/test.xml jetty9-9.4.39/jetty-webapp/src/test/webapp/WEB-INF/test.xml
--- jetty9-9.4.38/jetty-webapp/src/test/webapp/WEB-INF/test.xml 1970-01-01 01:00:00.000000000 +0100
+++ jetty9-9.4.39/jetty-webapp/src/test/webapp/WEB-INF/test.xml 2021-03-25 15:36:22.000000000 +0100
@@ -0,0 +1 @@
+test
diff -Nru jetty9-9.4.38/jetty-websocket/javax-websocket-client-impl/pom.xml jetty9-9.4.39/jetty-websocket/javax-websocket-client-impl/pom.xml
--- jetty9-9.4.38/jetty-websocket/javax-websocket-client-impl/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/javax-websocket-client-impl/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/javax-websocket-server-impl/pom.xml jetty9-9.4.39/jetty-websocket/javax-websocket-server-impl/pom.xml
--- jetty9-9.4.38/jetty-websocket/javax-websocket-server-impl/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/javax-websocket-server-impl/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/jetty-websocket-tests/pom.xml jetty9-9.4.39/jetty-websocket/jetty-websocket-tests/pom.xml
--- jetty9-9.4.38/jetty-websocket/jetty-websocket-tests/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/jetty-websocket-tests/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/PermessageDeflateBufferTest.java jetty9-9.4.39/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/PermessageDeflateBufferTest.java
--- jetty9-9.4.38/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/PermessageDeflateBufferTest.java 1970-01-01 01:00:00.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/PermessageDeflateBufferTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -0,0 +1,135 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.websocket.tests;
+
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.websocket.api.Session;
+import org.eclipse.jetty.websocket.api.annotations.WebSocket;
+import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
+import org.eclipse.jetty.websocket.client.WebSocketClient;
+import org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer;
+import org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class PermessageDeflateBufferTest
+{
+ private Server server;
+ private ServerConnector connector;
+ private WebSocketClient client;
+
+ // @checkstyle-disable-check : AvoidEscapedUnicodeCharactersCheck
+ private static final List<String> DICT = Arrays.asList(
+ "\uD83C\uDF09",
+ "\uD83C\uDF0A",
+ "\uD83C\uDF0B",
+ "\uD83C\uDF0C",
+ "\uD83C\uDF0D",
+ "\uD83C\uDF0F",
+ "\uD83C\uDFC0",
+ "\uD83C\uDFC1",
+ "\uD83C\uDFC2",
+ "\uD83C\uDFC3",
+ "\uD83C\uDFC4",
+ "\uD83C\uDFC5"
+ );
+
+ private static String randomText()
+ {
+ Random rnd = new Random();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < 15000; i++)
+ {
+ sb.append(DICT.get(rnd.nextInt(DICT.size())));
+ }
+ return sb.toString();
+ }
+
+ @BeforeEach
+ public void before() throws Exception
+ {
+ server = new Server();
+ connector = new ServerConnector(server);
+ server.addConnector(connector);
+
+ ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
+ contextHandler.setContextPath("/");
+ server.setHandler(contextHandler);
+ WebSocketUpgradeFilter.configure(contextHandler);
+ NativeWebSocketServletContainerInitializer.configure(contextHandler, (context, container) ->
+ {
+ container.getPolicy().setMaxTextMessageBufferSize(65535);
+ container.getPolicy().setInputBufferSize(16384);
+ container.addMapping("/", ServerSocket.class);
+ });
+
+ server.start();
+ client = new WebSocketClient();
+ client.start();
+ }
+
+ @AfterEach
+ public void after() throws Exception
+ {
+ client.stop();
+ server.stop();
+ }
+
+ @WebSocket
+ public static class ServerSocket extends EchoSocket
+ {
+ @Override
+ public void onError(Throwable cause)
+ {
+ cause.printStackTrace();
+ super.onError(cause);
+ }
+ }
+
+ @Test
+ public void testPermessageDeflateAggregation() throws Exception
+ {
+ EventSocket socket = new EventSocket();
+ ClientUpgradeRequest clientUpgradeRequest = new ClientUpgradeRequest();
+ clientUpgradeRequest.addExtensions("permessage-deflate");
+
+ URI uri = URI.create("ws://localhost:" + connector.getLocalPort());
+ Session session = client.connect(socket, uri, clientUpgradeRequest).get(5, TimeUnit.SECONDS);
+
+ String s = randomText();
+ session.getRemote().sendString(s);
+ assertThat(socket.textMessages.poll(5, TimeUnit.SECONDS), is(s));
+
+ session.close();
+ assertTrue(socket.closeLatch.await(5, TimeUnit.SECONDS));
+ }
+}
diff -Nru jetty9-9.4.38/jetty-websocket/pom.xml jetty9-9.4.39/jetty-websocket/pom.xml
--- jetty9-9.4.38/jetty-websocket/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<artifactId>jetty-project</artifactId>
<groupId>org.eclipse.jetty</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/websocket-api/pom.xml jetty9-9.4.39/jetty-websocket/websocket-api/pom.xml
--- jetty9-9.4.38/jetty-websocket/websocket-api/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/websocket-api/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/websocket-client/pom.xml jetty9-9.4.39/jetty-websocket/websocket-client/pom.xml
--- jetty9-9.4.38/jetty-websocket/websocket-client/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/websocket-client/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/websocket-common/pom.xml jetty9-9.4.39/jetty-websocket/websocket-common/pom.xml
--- jetty9-9.4.38/jetty-websocket/websocket-common/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/websocket-common/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java jetty9-9.4.39/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java
--- jetty9-9.4.38/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java 2021-03-25 15:36:22.000000000 +0100
@@ -197,14 +197,15 @@
while (true)
{
+ // The buffer returned by the accumulator might not be empty, so we must append starting from the limit.
ByteBuffer buffer = accumulator.ensureBuffer(DECOMPRESS_BUF_SIZE);
- int read = inflater.inflate(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.capacity() - buffer.limit());
- buffer.limit(buffer.limit() + read);
- accumulator.addLength(read);
+ int decompressed = inflater.inflate(buffer.array(), buffer.arrayOffset() + buffer.limit(), buffer.capacity() - buffer.limit());
+ buffer.limit(buffer.limit() + decompressed);
+ accumulator.addLength(decompressed);
if (LOG.isDebugEnabled())
- LOG.debug("Decompressed {} bytes into buffer {} from {}", read, BufferUtil.toDetailString(buffer), toDetail(inflater));
+ LOG.debug("Decompressed {} bytes into buffer {} from {}", decompressed, BufferUtil.toDetailString(buffer), toDetail(inflater));
- if (read <= 0)
+ if (decompressed <= 0)
break;
}
}
@@ -495,8 +496,9 @@
{
while (true)
{
+ // The buffer returned by the accumulator might not be empty, so we must append starting from the limit.
ByteBuffer buffer = accumulator.ensureBuffer(8, outputLength);
- int compressed = deflater.deflate(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.capacity() - buffer.limit(), Deflater.SYNC_FLUSH);
+ int compressed = deflater.deflate(buffer.array(), buffer.arrayOffset() + buffer.limit(), buffer.capacity() - buffer.limit(), Deflater.SYNC_FLUSH);
buffer.limit(buffer.limit() + compressed);
if (LOG.isDebugEnabled())
diff -Nru jetty9-9.4.38/jetty-websocket/websocket-server/pom.xml jetty9-9.4.39/jetty-websocket/websocket-server/pom.xml
--- jetty9-9.4.38/jetty-websocket/websocket-server/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/websocket-server/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-websocket/websocket-servlet/pom.xml jetty9-9.4.39/jetty-websocket/websocket-servlet/pom.xml
--- jetty9-9.4.38/jetty-websocket/websocket-servlet/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-websocket/websocket-servlet/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/jetty-xml/pom.xml jetty9-9.4.39/jetty-xml/pom.xml
--- jetty9-9.4.38/jetty-xml/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-xml/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jetty-xml</artifactId>
diff -Nru jetty9-9.4.38/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlParserTest.java jetty9-9.4.39/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlParserTest.java
--- jetty9-9.4.38/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlParserTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlParserTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -33,6 +33,8 @@
URL configURL = XmlConfiguration.class.getClassLoader().getResource("org/eclipse/jetty/xml/configure_9_3.dtd");
parser.redirectEntity("configure.dtd", configURL);
+ parser.redirectEntity("configure_9_3.dtd", configURL);
+ //parser.redirectEntity("http://www.eclipse.org/jetty/configure_9_3.dtd", configURL);
parser.redirectEntity("http://jetty.eclipse.org/configure.dtd", configURL);
parser.redirectEntity("-//Mort Bay Consulting//DTD Configure//EN", configURL);
diff -Nru jetty9-9.4.38/pom.xml jetty9-9.4.39/pom.xml
--- jetty9-9.4.38/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<name>Jetty :: Project</name>
<description>The Eclipse Jetty Project</description>
<packaging>pom</packaging>
@@ -19,7 +19,7 @@
<build-support.version>1.5</build-support.version>
<checkstyle.version>8.37</checkstyle.version>
<slf4j.version>1.7.30</slf4j.version>
- <log4j2.version>2.11.2</log4j2.version>
+ <log4j2.version>2.14.0</log4j2.version>
<disruptor.version>3.4.2</disruptor.version>
<logback.version>1.2.3</logback.version>
<jetty-test-policy.version>1.2</jetty-test-policy.version>
diff -Nru jetty9-9.4.38/tests/pom.xml jetty9-9.4.39/tests/pom.xml
--- jetty9-9.4.38/tests/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-project</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>org.eclipse.jetty.tests</groupId>
diff -Nru jetty9-9.4.38/tests/test-continuation/pom.xml jetty9-9.4.39/tests/test-continuation/pom.xml
--- jetty9-9.4.38/tests/test-continuation/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-continuation/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-distribution/pom.xml jetty9-9.4.39/tests/test-distribution/pom.xml
--- jetty9-9.4.38/tests/test-distribution/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-distribution/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -2,7 +2,7 @@
<parent>
<artifactId>tests-parent</artifactId>
<groupId>org.eclipse.jetty.tests</groupId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-http-client-transport/pom.xml jetty9-9.4.39/tests/test-http-client-transport/pom.xml
--- jetty9-9.4.38/tests/test-http-client-transport/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-http-client-transport/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-integration/pom.xml jetty9-9.4.39/tests/test-integration/pom.xml
--- jetty9-9.4.38/tests/test-integration/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-integration/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-integration</artifactId>
diff -Nru jetty9-9.4.38/tests/test-jmx/jmx-webapp/pom.xml jetty9-9.4.39/tests/test-jmx/jmx-webapp/pom.xml
--- jetty9-9.4.38/tests/test-jmx/jmx-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-jmx/jmx-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-jmx-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>jmx-webapp</artifactId>
<packaging>war</packaging>
diff -Nru jetty9-9.4.38/tests/test-jmx/jmx-webapp-it/pom.xml jetty9-9.4.39/tests/test-jmx/jmx-webapp-it/pom.xml
--- jetty9-9.4.38/tests/test-jmx/jmx-webapp-it/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-jmx/jmx-webapp-it/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-jmx-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jmx-webapp-it</artifactId>
diff -Nru jetty9-9.4.38/tests/test-jmx/pom.xml jetty9-9.4.39/tests/test-jmx/pom.xml
--- jetty9-9.4.38/tests/test-jmx/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-jmx/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>test-jmx-parent</artifactId>
diff -Nru jetty9-9.4.38/tests/test-loginservice/pom.xml jetty9-9.4.39/tests/test-loginservice/pom.xml
--- jetty9-9.4.38/tests/test-loginservice/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-loginservice/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-loginservice</artifactId>
<name>Jetty Tests :: Login Service</name>
diff -Nru jetty9-9.4.38/tests/test-quickstart/pom.xml jetty9-9.4.39/tests/test-quickstart/pom.xml
--- jetty9-9.4.38/tests/test-quickstart/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-quickstart/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-sessions-parent</artifactId>
<name>Jetty Tests :: Sessions :: Parent</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-file-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-file-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-file-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-file-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-file-sessions</artifactId>
<name>Jetty Tests :: Sessions :: File</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-gcloud-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-gcloud-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-gcloud-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-gcloud-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-gcloud-sessions</artifactId>
<name>Jetty Tests :: Sessions :: GCloud</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-hazelcast-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-hazelcast-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-hazelcast-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-hazelcast-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-hazelcast-sessions</artifactId>
<name>Jetty Tests :: Sessions :: Hazelcast</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-infinispan-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-infinispan-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-infinispan-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-infinispan-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-infinispan-sessions</artifactId>
<name>Jetty Tests :: Sessions :: Infinispan</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-jdbc-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-jdbc-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-jdbc-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-jdbc-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-jdbc-sessions</artifactId>
<name>Jetty Tests :: Sessions :: JDBC</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-memcached-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-memcached-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-memcached-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-memcached-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-memcached-sessions</artifactId>
<name>Jetty Tests :: Sessions :: Memcached</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-mongodb-sessions/pom.xml jetty9-9.4.39/tests/test-sessions/test-mongodb-sessions/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-mongodb-sessions/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-mongodb-sessions/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-mongodb-sessions</artifactId>
<name>Jetty Tests :: Sessions :: Mongo</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-sessions-common/pom.xml jetty9-9.4.39/tests/test-sessions/test-sessions-common/pom.xml
--- jetty9-9.4.38/tests/test-sessions/test-sessions-common/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-sessions-common/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-sessions-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-sessions-common</artifactId>
<name>Jetty Tests :: Sessions :: Common</name>
diff -Nru jetty9-9.4.38/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DuplicateCookieTest.java jetty9-9.4.39/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DuplicateCookieTest.java
--- jetty9-9.4.38/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DuplicateCookieTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DuplicateCookieTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -65,13 +65,15 @@
try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session")))
{
//create a valid session
- createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ Session s4422 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
"4422");
client = new HttpClient();
client.start();
+ assertEquals(0, s4422.getRequests());
+
//make a request with another session cookie in there that does not exist
Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=check");
request.header("Cookie", "JSESSIONID=123"); //doesn't exist
@@ -79,6 +81,66 @@
ContentResponse response = request.send();
assertEquals(HttpServletResponse.SC_OK, response.getStatus());
assertEquals("4422", response.getContentAsString());
+
+ assertEquals(0, s4422.getRequests());
+ }
+ finally
+ {
+ server1.stop();
+ client.stop();
+ }
+ }
+
+ @Test
+ public void testMultipleSessionCookiesValidFirst() throws Exception
+ {
+ String contextPath = "";
+ String servletMapping = "/server";
+ HttpClient client = null;
+
+ DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory();
+ SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory();
+
+ TestServer server1 = new TestServer(0, -1, -1, cacheFactory, storeFactory);
+ TestServlet servlet = new TestServlet();
+ ServletHolder holder = new ServletHolder(servlet);
+ ServletContextHandler contextHandler = server1.addContext(contextPath);
+ contextHandler.addServlet(holder, servletMapping);
+ server1.start();
+ int port1 = server1.getPort();
+
+ try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session")))
+ {
+ //create a valid session
+ Session s1122 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "1122");
+ //create an invalid session
+ Session s2233 = createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "2233");
+ //create another invalid session
+ Session s2255 = createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "2255");
+
+ client = new HttpClient();
+ client.start();
+
+ assertEquals(0, s1122.getRequests());
+ assertEquals(0, s2233.getRequests());
+ assertEquals(0, s2255.getRequests());
+
+ //make a request where the valid session cookie is first
+ Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=check");
+ request.header("Cookie", "JSESSIONID=1122"); //is valid
+ request.header("Cookie", "JSESSIONID=2233"); //is invalid
+ request.header("Cookie", "JSESSIONID=2255"); //is invalid
+ ContentResponse response = request.send();
+ assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+ assertEquals("1122", response.getContentAsString());
+
+ assertEquals(0, s1122.getRequests());
}
finally
{
@@ -88,7 +150,7 @@
}
@Test
- public void testMultipleSessionCookiesOnlyOneValid() throws Exception
+ public void testMultipleSessionCookiesInvalidFirst() throws Exception
{
String contextPath = "";
String servletMapping = "/server";
@@ -108,24 +170,93 @@
try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session")))
{
//create a valid session
- createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ Session s1122 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
"1122");
//create an invalid session
- createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
+ Session s2233 = createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
"2233");
+ //create another invalid session
+ Session s2255 = createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "2255");
client = new HttpClient();
client.start();
- //make a request with another session cookie in there that is not valid
+ assertEquals(0, s1122.getRequests());
+ assertEquals(0, s2233.getRequests());
+ assertEquals(0, s2255.getRequests());
+
+ //make a request with the valid session cookie last
Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=check");
+ request.header("Cookie", "JSESSIONID=2233"); //is invalid
+ request.header("Cookie", "JSESSIONID=2255"); //is invalid
request.header("Cookie", "JSESSIONID=1122"); //is valid
+ ContentResponse response = request.send();
+ assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+ assertEquals("1122", response.getContentAsString());
+
+ assertEquals(0, s1122.getRequests());
+ }
+ finally
+ {
+ server1.stop();
+ client.stop();
+ }
+ }
+
+ @Test
+ public void testMultipleSessionCookiesInvalidValidInvalid() throws Exception
+ {
+ String contextPath = "";
+ String servletMapping = "/server";
+ HttpClient client = null;
+
+ DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory();
+ SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory();
+
+ TestServer server1 = new TestServer(0, -1, -1, cacheFactory, storeFactory);
+ TestServlet servlet = new TestServlet();
+ ServletHolder holder = new ServletHolder(servlet);
+ ServletContextHandler contextHandler = server1.addContext(contextPath);
+ contextHandler.addServlet(holder, servletMapping);
+ server1.start();
+ int port1 = server1.getPort();
+
+ try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session")))
+ {
+ //create a valid session
+ Session s1122 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "1122");
+ //create an invalid session
+ Session s2233 = createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "2233");
+ //create another invalid session
+ Session s2255 = createInvalidSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "2255");
+
+ client = new HttpClient();
+ client.start();
+
+ assertEquals(0, s1122.getRequests());
+ assertEquals(0, s2233.getRequests());
+ assertEquals(0, s2255.getRequests());
+
+ //make a request with another session cookie with the valid session surrounded by invalids
+ Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=check");
request.header("Cookie", "JSESSIONID=2233"); //is invalid
+ request.header("Cookie", "JSESSIONID=1122"); //is valid
+ request.header("Cookie", "JSESSIONID=2255"); //is invalid
ContentResponse response = request.send();
assertEquals(HttpServletResponse.SC_OK, response.getStatus());
assertEquals("1122", response.getContentAsString());
+
+ assertEquals(0, s1122.getRequests());
}
finally
{
@@ -155,25 +286,83 @@
try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session")))
{
//create some of unexpired sessions
- createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ Session s1234 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
"1234");
- createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ Session s5678 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
"5678");
- createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ Session s9111 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
"9111");
client = new HttpClient();
client.start();
+ //check that the request count is 0
+ assertEquals(0, s1234.getRequests());
+ assertEquals(0, s5678.getRequests());
+ assertEquals(0, s9111.getRequests());
+
//make a request with multiple valid session ids
Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=check");
request.header("Cookie", "JSESSIONID=1234");
request.header("Cookie", "JSESSIONID=5678");
ContentResponse response = request.send();
assertEquals(HttpServletResponse.SC_BAD_REQUEST, response.getStatus());
+
+ //check that all valid sessions have their request counts decremented correctly after the request, back to 0
+ assertEquals(0, s1234.getRequests());
+ assertEquals(0, s5678.getRequests());
+ assertEquals(0, s9111.getRequests());
+ }
+ finally
+ {
+ server1.stop();
+ client.stop();
+ }
+ }
+
+ @Test
+ public void testMultipleIdenticalSessionCookies() throws Exception
+ {
+ String contextPath = "";
+ String servletMapping = "/server";
+ HttpClient client = null;
+
+ DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory();
+ SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory();
+
+ TestServer server1 = new TestServer(0, -1, -1, cacheFactory, storeFactory);
+ TestServlet servlet = new TestServlet();
+ ServletHolder holder = new ServletHolder(servlet);
+ ServletContextHandler contextHandler = server1.addContext(contextPath);
+ contextHandler.addServlet(holder, servletMapping);
+ server1.start();
+ int port1 = server1.getPort();
+
+ try (StacklessLogging stackless = new StacklessLogging(Log.getLogger("org.eclipse.jetty.server.session")))
+ {
+ //create a valid unexpired session
+ Session s1234 = createUnExpiredSession(contextHandler.getSessionHandler().getSessionCache(),
+ contextHandler.getSessionHandler().getSessionCache().getSessionDataStore(),
+ "1234");
+
+ client = new HttpClient();
+ client.start();
+
+ //check that the request count is 0
+ assertEquals(0, s1234.getRequests());
+
+ //make a request with multiple valid session ids
+ Request request = client.newRequest("http://localhost:" + port1 + contextPath + servletMapping + "?action=check");
+ request.header("Cookie", "JSESSIONID=1234");
+ request.header("Cookie", "JSESSIONID=1234");
+ ContentResponse response = request.send();
+ assertEquals(HttpServletResponse.SC_OK, response.getStatus());
+
+ //check that all valid sessions have their request counts decremented correctly after the request, back to 0
+ assertEquals(0, s1234.getRequests());
}
finally
{
@@ -189,6 +378,7 @@
data.setExpiry(now + TimeUnit.DAYS.toMillis(1));
Session s = cache.newSession(data);
cache.add(id, s);
+ s.complete(); //pretend a request that created the session is finished
return s;
}
diff -Nru jetty9-9.4.38/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionInvalidationTest.java jetty9-9.4.39/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionInvalidationTest.java
--- jetty9-9.4.38/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionInvalidationTest.java 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionInvalidationTest.java 2021-03-25 15:36:22.000000000 +0100
@@ -30,8 +30,11 @@
import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.StringUtil;
import org.junit.jupiter.api.Test;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsStringIgnoringCase;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -96,6 +99,63 @@
}
}
+ @Test
+ public void testCreateInvalidateCheckWithNullCache() throws Exception
+ {
+ String contextPath = "";
+ String servletMapping = "/server";
+ int scavengePeriod = -1;
+
+ NullSessionCacheFactory cacheFactory = new NullSessionCacheFactory();
+ SessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory();
+ ((AbstractSessionDataStoreFactory)storeFactory).setGracePeriodSec(scavengePeriod);
+
+ TestServer server = new TestServer(0, 0, scavengePeriod,
+ cacheFactory, storeFactory);
+ ServletContextHandler context = server.addContext(contextPath);
+ TestServlet servlet = new TestServlet();
+ ServletHolder holder = new ServletHolder(servlet);
+ context.addServlet(holder, servletMapping);
+
+ try
+ {
+ server.start();
+ int port1 = server.getPort();
+
+ HttpClient client = new HttpClient();
+ client.start();
+ try
+ {
+ String url = "http://localhost:" + port1 + contextPath + servletMapping;
+ // Create the session
+ ContentResponse response1 = client.GET(url + "?action=init");
+ assertEquals(HttpServletResponse.SC_OK, response1.getStatus());
+ String sessionCookie = response1.getHeaders().get("Set-Cookie");
+ assertTrue(sessionCookie != null);
+
+ // Make a request which will invalidate the existing session
+ Request request2 = client.newRequest(url + "?action=test");
+ ContentResponse response2 = request2.send();
+ assertEquals(HttpServletResponse.SC_OK, response2.getStatus());
+
+ //Make a request to get the session - should not exist
+ Request request3 = client.newRequest(url + "?action=get");
+ ContentResponse response3 = request3.send();
+ assertEquals(HttpServletResponse.SC_OK, response3.getStatus());
+ assertThat(response3.getContentAsString(), containsStringIgnoringCase("session=null"));
+
+ }
+ finally
+ {
+ client.stop();
+ }
+ }
+ finally
+ {
+ server.stop();
+ }
+ }
+
public static class TestServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
@@ -131,6 +191,12 @@
assertThrows(IllegalStateException.class, () -> session.setAttribute("a", "b"));
assertDoesNotThrow(() -> session.getId());
}
+ else if ("get".equals(action))
+ {
+ HttpSession session = request.getSession(false);
+
+ httpServletResponse.getWriter().println("SESSION=" + (session == null ? "null" : session.getId()));
+ }
}
}
}
diff -Nru jetty9-9.4.38/tests/test-webapps/pom.xml jetty9-9.4.39/tests/test-webapps/pom.xml
--- jetty9-9.4.38/tests/test-webapps/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>tests-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>test-webapps-parent</artifactId>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-cdi-common-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-cdi-common-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-cdi-common-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-cdi-common-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-felix-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-felix-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-felix-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-felix-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-http2-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-http2-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-http2-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-http2-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-jaas-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-jaas-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-jaas-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-jaas-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-jaas-webapp</artifactId>
<name>Jetty Tests :: WebApp :: JAAS</name>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-jetty-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-jetty-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-jetty-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-jetty-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-jndi-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-jndi-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-jndi-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-jndi-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-jndi-webapp</artifactId>
<name>Jetty Tests :: WebApp :: JNDI</name>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-mock-resources/pom.xml jetty9-9.4.39/tests/test-webapps/test-mock-resources/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-mock-resources/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-mock-resources/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<name>Jetty Tests :: WebApp :: Mock Resources</name>
<artifactId>test-mock-resources</artifactId>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-owb-cdi-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-owb-cdi-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-owb-cdi-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-owb-cdi-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-proxy-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-proxy-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-proxy-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-proxy-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-servlet-spec/pom.xml jetty9-9.4.39/tests/test-webapps/test-servlet-spec/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-servlet-spec/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-servlet-spec/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-servlet-spec-parent</artifactId>
<name>Jetty Tests :: Spec Test WebApp :: Parent</name>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml jetty9-9.4.39/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-servlet-spec-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-container-initializer</artifactId>
<packaging>jar</packaging>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-servlet-spec-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<name>Jetty Tests :: Webapps :: Spec Webapp</name>
<artifactId>test-spec-webapp</artifactId>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml jetty9-9.4.39/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-servlet-spec-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<name>Jetty Tests :: WebApp :: Servlet Spec :: Fragment Jar</name>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-simple-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-simple-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-simple-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-simple-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-simple-webapp</artifactId>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-webapp-rfc2616/pom.xml jetty9-9.4.39/tests/test-webapps/test-webapp-rfc2616/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-webapp-rfc2616/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-webapp-rfc2616/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -4,7 +4,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<artifactId>test-webapp-rfc2616</artifactId>
<name>Jetty Tests :: WebApp :: RFC2616</name>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-websocket-client-provided-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-websocket-client-provided-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-websocket-client-provided-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-websocket-client-provided-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-websocket-client-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-websocket-client-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-websocket-client-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-websocket-client-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/tests/test-webapps/test-weld-cdi-webapp/pom.xml jetty9-9.4.39/tests/test-webapps/test-weld-cdi-webapp/pom.xml
--- jetty9-9.4.38/tests/test-webapps/test-weld-cdi-webapp/pom.xml 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/tests/test-webapps/test-weld-cdi-webapp/pom.xml 2021-03-25 15:36:22.000000000 +0100
@@ -3,7 +3,7 @@
<parent>
<groupId>org.eclipse.jetty.tests</groupId>
<artifactId>test-webapps-parent</artifactId>
- <version>9.4.38.v20210224</version>
+ <version>9.4.39.v20210325</version>
</parent>
<modelVersion>4.0.0</modelVersion>
diff -Nru jetty9-9.4.38/VERSION.txt jetty9-9.4.39/VERSION.txt
--- jetty9-9.4.38/VERSION.txt 2021-02-24 21:16:09.000000000 +0100
+++ jetty9-9.4.39/VERSION.txt 2021-03-25 15:36:22.000000000 +0100
@@ -1,5 +1,19 @@
+jetty-9.4.39.v20210325 - 25 March 2021
+ + 6034 SslContextFactory may select a wildcard certificate during SNI
+ selection when a more specific SSL certificate is present
+ + 6050 Websocket: NotUtf8Exception after upgrade 9.4.35 -> 9.4.36 or newer
+ + 6052 Cleanup TypeUtil and ModuleLocation to allow jetty-client/hybrid to
+ work on Android
+ + 6063 Allow override of hazelcast version when using module
+ + 6072 jetty server high CPU when client send data length > 17408
+ + 6085 Jetty keeps Sessions in use after "Duplicate valid session cookies"
+ Message
+ + 6101 Normalise ambiguous URIs
+ + 6102 Exclude webapps directory from deployment scan
+
jetty-9.4.38.v20210224 - 24 February 2021
+ 4275 Path Normalization/Traversal - Context Matching
+ + 5963 Improve QuotedQualityCSV for CVE-2020-27223
+ 5977 Cache-Control header set by a filter is override by the value from
DefaultServlet configuration
+ 5994 QueuedThreadPool "free" threads
@@ -16,6 +30,7 @@
+ 5909 Cannot disable HTTP OPTIONS Method
+ 5937 Unnecessary blocking in ResourceService
+ 5950 Deadlock due to logging inside classloaders
+ + 5963 Improve QuotedQualityCSV - Resolves CVE-2020-27223
+ 5973 Proxy client TLS authentication example
+ 5977 Cache-Control header set by a filter is override by the value from
DefaultServlet configuration
@@ -71,7 +86,7 @@
produced by ForwardedHeader
+ 5443 Request without Host header fails with NullPointerException in
ForwardedRequestCustomizer
- + 5451 Improve Working Directory creation
+ + 5451 Improve Working Directory creation - Resolves CVE-2020-27216
+ 5454 Request error context is not reset
+ 5475 Update to spifly 1.3.2 and asm 9
+ 5480 NPE from WebInfConfiguration.deconfigure during WebAppContext shutdown
@@ -170,7 +185,8 @@
+ 4923 SecureRequestCustomizer.SslAttributes does not cache cert chain like
before
+ 4929 HttpClient: HttpCookieStore.Empty prevents sending cookies
- + 4936 Response header overflow leads to buffer corruptions
+ + 4936 Response header overflow leads to buffer corruptions - Resolves
+ CVE-2019-17638
jetty-9.4.29.v20200521 - 21 May 2020
+ 2188 Lock contention creating HTTP/2 streams
@@ -307,7 +323,7 @@
+ 3083 The ini-template for jetty.console-capture.dir does not match the
default value
+ 4128 OpenIdCredetials can't decode JWT ID token
- + 4334 Better test ErrorHandler changes
+ + 4334 Better test ErrorHandler changes - Resolves CVE-2019-17632
jetty-9.4.23.v20191118 - 18 November 2019
+ 1485 Add systemd service file
@@ -397,6 +413,8 @@
inclusion of sessionid
jetty-9.4.21.v20190926 - 26 September 2019
+ + Includes fixes for CVE-2019-9511, CVE-2019-9512, CVE-2019-9514,
+ CVE-2019-9515, CVE-2019-9516, and CVE-2019-9518
+ 97 Permanent UnavailableException thrown during servlet request handling
should cause servlet destroy
+ 137 Support OAuth
@@ -542,8 +560,10 @@
jetty-9.4.17.v20190418 - 18 April 2019
+ 2140 Infinispan and hazelcast changes to scavenge zombie expired sessions
+ 3464 Split SslContextFactory into Client and Server
- + 3549 Directory Listing on Windows reveals Resource Base path
- + 3555 DefaultHandler Reveals Base Resource Path of each Context
+ + 3549 Directory Listing on Windows reveals Resource Base path - Resolves
+ CVE-2019-10246
+ + 3555 DefaultHandler Reveals Base Resource Path of each Context - Resolves
+ CVE-2019-10247
jetty-9.4.16.v20190411 - 11 April 2019
+ 1861 Limit total bytes pooled by ByteBufferPools
@@ -551,7 +571,8 @@
+ 3159 WebSocket permessage-deflate RSV1 validity check
+ 3274 OSGi versions of java.base classes in
org.apache.felix:org.osgi.foundation:jar conflicts with new rules on Java 9+
- + 3319 Modernize Directory Listing: HTML5 and Sorting
+ + 3319 Modernize Directory Listing: HTML5 and Sorting - Resolves
+ CVE-2019-10241
+ 3361 HandlerCollection.addHandler is lacking synchronization
+ 3373 OutOfMemoryError: Java heap space in GZIPContentDecoder
+ 3389 Websockets jsr356 willDecode not invoked during decoding
@@ -624,8 +645,10 @@
+ 4217 SslConnection.DecryptedEnpoint.flush eternal busy loop
jetty-9.3.27.v20190418 - 18 April 2019
- + 3549 Directory Listing on Windows reveals Resource Base path
- + 3555 DefaultHandler Reveals Base Resource Path of each Context
+ + 3549 Directory Listing on Windows reveals Resource Base path - Resolves
+ CVE-2019-10246
+ + 3555 DefaultHandler Reveals Base Resource Path of each Context - Resolves
+ CVE-2019-10247
jetty-9.3.26.v20190403 - 03 April 2019
+ 2954 Improve cause reporting for HttpClient failures
@@ -633,17 +656,20 @@
org.apache.felix:org.osgi.foundation:jar conflicts with new rules on Java 9+
+ 3302 Support host:port in X-Forwarded-For header in
ForwardedRequestCustomizer
- + 3319 Allow reverse sort for directory listed files
+ + 3319 Allow reverse sort for directory listed files - Resolves CVE-2019-10241
jetty-9.2.29.v20191105 - 05 November 2019
+ 4217 SslConnection.DecryptedEnpoint.flush eternal busy loop
jetty-9.2.28.v20190418 - 18 April 2019
- + 3549 Directory Listing on Windows reveals Resource Base path
- + 3555 DefaultHandler Reveals Base Resource Path of each Context
+ + 3549 Directory Listing on Windows reveals Resource Base path - Resolves
+ CVE-2019-10246
+ + 3555 DefaultHandler Reveals Base Resource Path of each Context - Resolves
+ CVE-2019-10247
jetty-9.2.27.v20190403 - 03 April 2019
- + 3319 Refactored Directory Listing to modernize and avoid XSS
+ + 3319 Refactored Directory Listing to modernize and avoid XSS - Resolves
+ CVE-2019-10241
jetty-9.4.14.v20181114 - 14 November 2018
+ 3097 Duplicated programmatic Servlet Listeners causing duplicate calls
--- End Message ---