Version in base suite: 9.4.39-3+deb11u2 Base version: jetty9_9.4.39-3+deb11u2 Target version: jetty9_9.4.50-4+deb11u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/j/jetty9/jetty9_9.4.39-3+deb11u2.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/j/jetty9/jetty9_9.4.50-4+deb11u1.dsc /srv/release.debian.org/tmp/9XZjGi5LYn/jetty9-9.4.50/jetty-client/src/test/resources/keystore_sni_non_domain.p12 |binary /srv/release.debian.org/tmp/9XZjGi5LYn/jetty9-9.4.50/jetty-server/src/test/resources/keystore_sni_key_types.p12 |binary /srv/release.debian.org/tmp/9XZjGi5LYn/jetty9-9.4.50/jetty-unixsocket/src/test/resources/haproxy |binary jetty9-9.4.50/.github/ISSUE_TEMPLATE/issue-template.md | 2 jetty9-9.4.50/.github/dependabot.yml | 12 jetty9-9.4.50/Jenkinsfile | 66 jetty9-9.4.50/VERSION.txt | 171 jetty9-9.4.50/aggregates/jetty-all-compact3/pom.xml | 2 jetty9-9.4.50/aggregates/jetty-all/pom.xml | 2 jetty9-9.4.50/apache-jsp/pom.xml | 10 jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyJasperInitializer.java | 2 jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyTldPreScanned.java | 2 jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JuliLog.java | 2 jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/jsp/JettyJspServlet.java | 2 jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyJspServlet.java | 2 jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyTldPreScanned.java | 2 jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJspFileNameToClass.java | 2 jetty9-9.4.50/apache-jstl/pom.xml | 10 jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspConfig.java | 2 jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspIncludeTest.java | 2 jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JstlTest.java | 2 jetty9-9.4.50/build-resources/pom.xml | 16 jetty9-9.4.50/debian/README.Debian | 32 jetty9-9.4.50/debian/changelog | 128 jetty9-9.4.50/debian/control | 96 jetty9-9.4.50/debian/copyright | 8 jetty9-9.4.50/debian/jetty9.dirs | 4 jetty9-9.4.50/debian/jetty9.links | 4 jetty9-9.4.50/debian/jetty9.postrm | 5 jetty9-9.4.50/debian/maven.ignoreRules | 12 jetty9-9.4.50/debian/maven.rules | 4 jetty9-9.4.50/debian/patches/01-maven-bundle-plugin-version.patch | 7 jetty9-9.4.50/debian/patches/02-import-alpn-api.patch | 42 jetty9-9.4.50/debian/patches/04-weksocket-1.1-compatibility.patch | 20 jetty9-9.4.50/debian/patches/06-ignore-jetty-documentation.patch | 13 jetty9-9.4.50/debian/patches/07-assembly-plugin-configuration.patch | 62 jetty9-9.4.50/debian/patches/08-ignore-jetty-test-policy.patch | 13 jetty9-9.4.50/debian/patches/09-tweak-distribution.patch | 152 jetty9-9.4.50/debian/patches/CVE-2021-28169.patch | 520 jetty9-9.4.50/debian/patches/CVE-2021-34428.patch | 278 jetty9-9.4.50/debian/patches/CVE-2021-34429.patch | 1102 - jetty9-9.4.50/debian/patches/CVE-2022-2047.patch | 199 jetty9-9.4.50/debian/patches/CVE-2022-2048.patch | 207 jetty9-9.4.50/debian/patches/CVE-2023-26048.patch | 203 jetty9-9.4.50/debian/patches/CVE-2023-26049.patch | 18 jetty9-9.4.50/debian/patches/CVE-2023-36478.patch | 7110 ++++++++++ jetty9-9.4.50/debian/patches/CVE-2023-36479.patch | 8 jetty9-9.4.50/debian/patches/CVE-2023-40167.patch | 24 jetty9-9.4.50/debian/patches/CVE-2023-41900.patch | 437 jetty9-9.4.50/debian/patches/CVE-2023-44487.patch | 622 jetty9-9.4.50/debian/patches/series | 10 jetty9-9.4.50/debian/patches/servlet-api.patch | 26 jetty9-9.4.50/debian/start.ini | 10 jetty9-9.4.50/examples/async-rest/async-rest-jar/pom.xml | 2 jetty9-9.4.50/examples/async-rest/async-rest-jar/src/main/java/org/eclipse/jetty/example/asyncrest/AbstractRestServlet.java | 2 jetty9-9.4.50/examples/async-rest/async-rest-jar/src/main/java/org/eclipse/jetty/example/asyncrest/AsyncRestServlet.java | 2 jetty9-9.4.50/examples/async-rest/async-rest-jar/src/main/java/org/eclipse/jetty/example/asyncrest/SerialRestServlet.java | 2 jetty9-9.4.50/examples/async-rest/async-rest-webapp/pom.xml | 2 jetty9-9.4.50/examples/async-rest/async-rest-webapp/src/test/java/org/eclipse/jetty/example/asyncrest/DemoServer.java | 2 jetty9-9.4.50/examples/async-rest/pom.xml | 2 jetty9-9.4.50/examples/embedded/pom.xml | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/AsyncEchoServlet.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/DumpServlet.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ExampleServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ExampleServerXml.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ExampleUtil.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FastFileServer.java | 8 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FileServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/FileServerXml.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloHandler.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloServlet.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloSessionServlet.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/HelloWorld.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/Http2Server.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/JarServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/JettyDistribution.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyContexts.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyHandlers.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyServletContexts.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/MinimalServlets.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneConnector.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneContext.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneHandler.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContext.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContextJmxStats.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneServletContextWithSession.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneWebApp.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/OneWebAppWithJsp.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ProxyServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/RewriteServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/SecuredHelloHandler.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ServerWithAnnotations.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ServerWithJMX.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ServerWithJNDI.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/SimplestServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/SplitFileServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/WebSocketJsrServer.java | 2 jetty9-9.4.50/examples/embedded/src/main/java/org/eclipse/jetty/embedded/WebSocketServer.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/AbstractEmbeddedTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ExampleServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ExampleServerXmlTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/FastFileServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/FileServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/FileServerXmlTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/JarServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/LikeJettyXmlTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ManyConnectorsTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ManyContextsTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ManyHandlersTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ManyServletContextsTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/MinimalServletsTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneConnectorTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneContextTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneHandlerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneServletContextJmxStatsTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneServletContextTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneServletContextWithSessionTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneWebAppTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/OneWebAppWithJspTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ProxyServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/RewriteServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/SecuredHelloHandlerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ServerUtil.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ServerWithAnnotationsTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ServerWithJMXTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/ServerWithJNDITest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/SimplestServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/SplitFileServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/WebSocketJsrServerTest.java | 2 jetty9-9.4.50/examples/embedded/src/test/java/org/eclipse/jetty/embedded/WebSocketServerTest.java | 2 jetty9-9.4.50/examples/pom.xml | 16 jetty9-9.4.50/jetty-alpn/jetty-alpn-client/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-client/src/main/java/org/eclipse/jetty/alpn/client/ALPNClientConnection.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-client/src/main/java/org/eclipse/jetty/alpn/client/ALPNClientConnectionFactory.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-conscrypt-client/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-conscrypt-client/src/main/java/org/eclipse/jetty/alpn/conscrypt/client/ConscryptClientALPNProcessor.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-conscrypt-client/src/test/java/org/eclipse/jetty/alpn/java/client/ConscryptHTTP2ClientTest.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-conscrypt-server/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-conscrypt-server/src/main/java/org/eclipse/jetty/alpn/conscrypt/server/ConscryptServerALPNProcessor.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-conscrypt-server/src/test/java/org/eclipse/jetty/alpn/conscrypt/server/ConscryptHTTP2ServerTest.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-client/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-client/src/main/java/org/eclipse/jetty/alpn/java/client/JDK9ClientALPNProcessor.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-client/src/test/java/org/eclipse/jetty/alpn/java/client/JDK9HTTP2ClientTest.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-server/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-server/src/main/java/org/eclipse/jetty/alpn/java/server/JDK9ServerALPNProcessor.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-server/src/test/java/org/eclipse/jetty/alpn/java/server/JDK9ALPNTest.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-java-server/src/test/java/org/eclipse/jetty/alpn/java/server/JDK9HTTP2Server.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-openjdk8-client/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-openjdk8-client/src/main/java/org/eclipse/jetty/alpn/openjdk8/client/OpenJDK8ClientALPNProcessor.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-openjdk8-client/src/test/java/org/eclipse/jetty/alpn/java/client/OpenJDK8HTTP2Client.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-openjdk8-server/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-openjdk8-server/src/main/java/org/eclipse/jetty/alpn/openjdk8/server/OpenJDK8ServerALPNProcessor.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-openjdk8-server/src/test/java/org/eclipse/jetty/alpn/openjdk8/server/OpenJDK8HTTP2Server.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-server/pom.xml | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn-impl/alpn-16.mod | 4 jetty9-9.4.50/jetty-alpn/jetty-alpn-server/src/main/config/modules/alpn.mod | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-server/src/main/java/org/eclipse/jetty/alpn/server/ALPNServerConnection.java | 2 jetty9-9.4.50/jetty-alpn/jetty-alpn-server/src/main/java/org/eclipse/jetty/alpn/server/ALPNServerConnectionFactory.java | 2 jetty9-9.4.50/jetty-alpn/pom.xml | 2 jetty9-9.4.50/jetty-annotations/pom.xml | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AbstractDiscoverableAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationConfiguration.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationDecorator.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationIntrospector.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/AnnotationParser.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ClassInheritanceHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ContainerInitializerAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/DeclareRolesAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/MultiPartConfigAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/PostConstructAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/PreDestroyAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ResourceAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ResourcesAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/RunAsAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ServletContainerInitializersStarter.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/ServletSecurityAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebFilterAnnotation.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebFilterAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebListenerAnnotation.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebListenerAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebServletAnnotation.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/WebServletAnnotationHandler.java | 2 jetty9-9.4.50/jetty-annotations/src/main/java/org/eclipse/jetty/annotations/package-info.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/acme/ClassOne.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ClassA.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ClassB.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/FilterC.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/InterfaceD.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ListenerC.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/Multi.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/Sample.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServletC.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/ServletD.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationConfiguration.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationInheritance.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestAnnotationParser.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestRunAsAnnotation.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestSecurityAnnotationConversions.java | 18 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/TestServletAnnotations.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/WebInfClassServletContainerInitializer.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/resources/ResourceA.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/resources/ResourceB.java | 2 jetty9-9.4.50/jetty-annotations/src/test/java/org/eclipse/jetty/annotations/resources/TestResourceAnnotations.java | 2 jetty9-9.4.50/jetty-ant/pom.xml | 10 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/AntWebInfConfiguration.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/JettyStopTask.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/package-info.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/types/Attribute.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/types/Attributes.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/types/Connector.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/types/package-info.java | 2 jetty9-9.4.50/jetty-ant/src/main/java/org/eclipse/jetty/ant/utils/package-info.java | 2 jetty9-9.4.50/jetty-ant/src/test/java/org/eclipse/jetty/ant/AntBuild.java | 2 jetty9-9.4.50/jetty-ant/src/test/java/org/eclipse/jetty/ant/JettyAntTaskTest.java | 2 jetty9-9.4.50/jetty-bom/pom.xml | 136 jetty9-9.4.50/jetty-cdi/pom.xml | 33 jetty9-9.4.50/jetty-cdi/src/main/java/org/eclipse/jetty/cdi/CdiDecoratingListener.java | 2 jetty9-9.4.50/jetty-cdi/src/main/java/org/eclipse/jetty/cdi/CdiServletContainerInitializer.java | 2 jetty9-9.4.50/jetty-cdi/src/main/java/org/eclipse/jetty/cdi/CdiSpiDecorator.java | 2 jetty9-9.4.50/jetty-cdi/src/test/java/org/eclipse/jetty/embedded/EmbeddedWeldTest.java | 2 jetty9-9.4.50/jetty-client/pom.xml | 10 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractConnectionPool.java | 57 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractConnectorHttpClientTransport.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractHttpClientTransport.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/AsyncContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationProtocolHandler.java | 24 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ConnectionPool.java | 12 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ContentDecoder.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ContinueProtocolHandler.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/DuplexConnectionPool.java | 5 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/GZIPContentDecoder.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpAuthenticationStore.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpChannel.java | 24 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java | 87 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClientTransport.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpConnection.java | 41 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpContent.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpContentResponse.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpConversation.java | 17 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpDestination.java | 205 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpExchange.java | 11 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpProxy.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpReceiver.java | 6 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRedirector.java | 45 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java | 17 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequestException.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponse.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/HttpSender.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/LeakTrackingConnectionPool.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexConnectionPool.java | 23 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexHttpDestination.java | 10 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/Origin.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/PoolingHttpDestination.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandler.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ProxyAuthenticationProtocolHandler.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ProxyConfiguration.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ProxyProtocolClientConnectionFactory.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/RandomConnectionPool.java | 4 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/RedirectProtocolHandler.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/RequestNotifier.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ResponseNotifier.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/RoundRobinConnectionPool.java | 4 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/SendFailure.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/Socks4Proxy.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/Synchronizable.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/TimeoutCompleteListener.java | 30 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/ValidatingConnectionPool.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/WWWAuthenticationProtocolHandler.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/Authentication.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/AuthenticationStore.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/Connection.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/ContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/ContentResponse.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/Destination.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/Request.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/Response.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/Result.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/api/package-info.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpChannelOverHTTP.java | 13 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpClientTransportOverHTTP.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpConnectionOverHTTP.java | 12 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpConnectionUpgrader.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTP.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTP.java | 21 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/http/HttpSenderOverHTTP.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/jmx/HttpClientMBean.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/package-info.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/AbstractAuthentication.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/AbstractTypedContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/BasicAuthentication.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/BufferingResponseListener.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/ByteBufferContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/BytesContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/DeferredContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/DigestAuthentication.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/FormContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/FutureResponseListener.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/InputStreamContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/InputStreamResponseListener.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/MultiPartContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/OutputStreamContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/PathContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/SPNEGOAuthentication.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/StringContentProvider.java | 2 jetty9-9.4.50/jetty-client/src/main/java/org/eclipse/jetty/client/util/package-info.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/AbstractHttpClientServerTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ClientConnectionCloseTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ConnectionPoolHelper.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ConnectionPoolTest.java | 72 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ContentResponseTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/EmptyServerHandler.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ExternalSiteTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HostnameVerificationTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpAuthenticationStoreTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAsyncContentTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAuthenticationTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientChunkedContentTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientCorrelationDataTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientCustomProxyTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientExplicitConnectionTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientFailureTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientGZIPTest.java | 6 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientIdleTimeoutTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientProxyProtocolTest.java | 3 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientProxyTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientRedirectTest.java | 196 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientSynchronizationTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java | 195 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java | 170 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientURITest.java | 47 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientUploadDuringServerShutdown.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpConnectionLifecycleTest.java | 10 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpCookieTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpRequestAbortTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpResponseAbortTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/HttpResponseConcurrentAbortTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/InsufficientThreadsDetectionTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/LivelockTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/NetworkTrafficListenerTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ProxyConfigurationTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ServerConnectionCloseTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/Socks4ProxyTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/TLSServerConnectionCloseTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ValidatingConnectionPoolTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/api/Usage.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpDestinationOverHTTPTest.java | 18 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpSenderOverHTTPTest.java | 7 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/jmx/HttpClientJMXTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/NeedWantClientAuthTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesClientTest.java | 358 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesServerTest.java | 11 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslConnectionTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/util/DeferredContentProviderTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/util/InputStreamContentProviderTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/util/MultiPartContentProviderTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java | 2 jetty9-9.4.50/jetty-client/src/test/java/org/eclipse/jetty/client/util/TypedContentProviderTest.java | 2 jetty9-9.4.50/jetty-client/src/test/resources/jetty-logging.properties | 1 jetty9-9.4.50/jetty-continuation/pom.xml | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Continuation.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationFilter.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationListener.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationSupport.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/ContinuationThrowable.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/FauxContinuation.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/Servlet3Continuation.java | 2 jetty9-9.4.50/jetty-continuation/src/main/java/org/eclipse/jetty/continuation/package-info.java | 2 jetty9-9.4.50/jetty-deploy/pom.xml | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/App.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppLifeCycle.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppProvider.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/ConfigurationManager.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/PropertiesConfigurationManager.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/DebugBinding.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/DebugListenerBinding.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBinding.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/OrderedGroupBinding.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardDeployer.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStopper.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardUndeployer.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/package-info.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Edge.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Graph.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/GraphOutputDot.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Node.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Path.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/package-info.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/jmx/DeploymentManagerMBean.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/jmx/package-info.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/package-info.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/WebAppProvider.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/jmx/WebAppProviderMBean.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/package-info.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/util/FileID.java | 2 jetty9-9.4.50/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/util/package-info.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/AppLifeCyclePathCollector.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/AppLifeCycleTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/BadAppDeployTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCyclePathTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentTempDirTest.java | 210 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/JmxServiceConnection.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/MockAppProvider.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/bindings/GlobalWebappConfigBindingTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/graph/GraphTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderRuntimeUpdatesTest.java | 7 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ScanningAppProviderStartupTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java | 2 jetty9-9.4.50/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java | 2 jetty9-9.4.50/jetty-deploy/src/test/resources/jetty-logging.properties | 5 jetty9-9.4.50/jetty-distribution/pom.xml | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/pom.xml | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/FCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpChannelOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpClientTransportOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpConnectionOverFCGI.java | 38 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpDestinationOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpReceiverOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpSenderOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/MultiplexHttpDestinationOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/ClientGenerator.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/Flusher.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/Generator.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/ServerGenerator.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/BeginRequestContentParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ClientParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ContentParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/EndRequestContentParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/HeaderParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ParamsContentParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/Parser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ResponseContentParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ServerParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/StreamContentParser.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/test/java/org/eclipse/jetty/fcgi/generator/ClientGeneratorTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-client/src/test/java/org/eclipse/jetty/fcgi/parser/ClientParserTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/pom.xml | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/HttpChannelOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/HttpTransportOverFCGI.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnection.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnectionFactory.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/TryFilesFilter.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/AbstractHttpClientServerTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/EmptyServerHandler.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/ExternalFastCGIServerTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/HttpClientTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/DrupalHTTP2FastCGIProxyServer.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServletTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/TryFilesFilterTest.java | 2 jetty9-9.4.50/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/WordPressHTTP2FastCGIProxyServer.java | 2 jetty9-9.4.50/jetty-fcgi/pom.xml | 2 jetty9-9.4.50/jetty-gcloud/jetty-gcloud-session-manager/pom.xml | 21 jetty9-9.4.50/jetty-gcloud/jetty-gcloud-session-manager/src/main/assembly/config.xml | 4 jetty9-9.4.50/jetty-gcloud/jetty-gcloud-session-manager/src/main/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStore.java | 2 jetty9-9.4.50/jetty-gcloud/jetty-gcloud-session-manager/src/main/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-gcloud/jetty-gcloud-session-manager/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionTester.java | 6 jetty9-9.4.50/jetty-gcloud/pom.xml | 4 jetty9-9.4.50/jetty-hazelcast/pom.xml | 3 jetty9-9.4.50/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-embedded.mod | 2 jetty9-9.4.50/jetty-hazelcast/src/main/config/modules/session-store-hazelcast-remote.mod | 4 jetty9-9.4.50/jetty-hazelcast/src/main/java/org/eclipse/jetty/hazelcast/session/HazelcastSessionDataStore.java | 2 jetty9-9.4.50/jetty-hazelcast/src/main/java/org/eclipse/jetty/hazelcast/session/HazelcastSessionDataStoreFactory.java | 24 jetty9-9.4.50/jetty-hazelcast/src/main/java/org/eclipse/jetty/hazelcast/session/SessionDataSerializer.java | 2 jetty9-9.4.50/jetty-hazelcast/src/test/java/org/eclipse/jetty/hazelcast/session/TestHazelcastSessions.java | 2 jetty9-9.4.50/jetty-home/pom.xml | 18 jetty9-9.4.50/jetty-home/src/main/resources/modules/conscrypt.mod | 2 jetty9-9.4.50/jetty-home/src/main/resources/modules/hawtio.mod | 5 jetty9-9.4.50/jetty-home/src/main/resources/modules/jamon.mod | 7 jetty9-9.4.50/jetty-home/src/main/resources/modules/jolokia.mod | 5 jetty9-9.4.50/jetty-http-spi/pom.xml | 29 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/DelegatingThreadPool.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/HttpSpiContextHandler.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyExchange.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpContext.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpExchange.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpExchangeDelegate.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServer.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServerProvider.java | 2 jetty9-9.4.50/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpsExchange.java | 2 jetty9-9.4.50/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/TestEndpointMultiplePublishProblem.java | 2 jetty9-9.4.50/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/TestSPIServer.java | 2 jetty9-9.4.50/jetty-http/pom.xml | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/BadMessageException.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/CompressedContentFormat.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCompliance.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/DateGenerator.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/DateParser.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/GZIPContentDecoder.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HostPortHttpField.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/Http1FieldPreEncoder.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpCompliance.java | 55 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpComplianceSection.java | 7 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpContent.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpCookie.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpField.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFieldPreEncoder.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java | 4 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpHeader.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpHeaderValue.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethod.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java | 10 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpScheme.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpStatus.java | 5 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java | 449 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/HttpVersion.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/MimeTypes.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartFormInputStream.java | 35 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartParser.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/PathMap.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/PrecompressedHttpContent.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/QuotedCSV.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/QuotedCSVParser.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/QuotedQualityCSV.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/ResourceHttpContent.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/Syntax.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/package-info.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/AbstractPathSpec.java | 11 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/MappedResource.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/MatchedPath.java | 81 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/MatchedResource.java | 76 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathMappings.java | 306 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathSpec.java | 28 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathSpecGroup.java | 2 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathSpecSet.java | 14 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/RegexPathSpec.java | 209 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/ServletPathSpec.java | 78 jetty9-9.4.50/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/UriTemplatePathSpec.java | 101 jetty9-9.4.50/jetty-http/src/main/resources/org/eclipse/jetty/http/mime.properties | 3 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/DateParserTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/GZIPContentDecoderTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpCookieTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldsMatchers.java | 8 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldsTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorClientTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerHTTPTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpSchemeTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpStatusCodeTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpTester.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpTesterTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURIParseTest.java | 252 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java | 615 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/MimeTypesTest.java | 162 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/MultiPartCaptureTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/MultiPartFormInputStreamTest.java | 9 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/MultiPartParserTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/PathMapTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/QuotedCSVTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/QuotedQualityCSVTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/SyntaxTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/matchers/HttpFieldsContainsHeaderKey.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/matchers/HttpFieldsContainsHeaderValue.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/matchers/HttpFieldsHeaderValue.java | 60 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/matchers/HttpFieldsMatchersTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathMappingsTest.java | 217 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathSpecAssert.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/RegexPathSpecTest.java | 125 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/ServletPathSpecMatchListTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/ServletPathSpecOrderTest.java | 7 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/ServletPathSpecTest.java | 169 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/UriTemplatePathSpecBadSpecsTest.java | 2 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/UriTemplatePathSpecTest.java | 18 jetty9-9.4.50/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/WebSocketUriMappingTest.java | 2 jetty9-9.4.50/jetty-http/src/test/resources/jetty-logging.properties | 1 jetty9-9.4.50/jetty-http2/http2-alpn-tests/pom.xml | 2 jetty9-9.4.50/jetty-http2/http2-alpn-tests/src/test/java/org/eclipse/jetty/http2/alpn/tests/ALPNNegotiationTest.java | 2 jetty9-9.4.50/jetty-http2/http2-alpn-tests/src/test/java/org/eclipse/jetty/http2/alpn/tests/AbstractALPNTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/pom.xml | 2 jetty9-9.4.50/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java | 15 jetty9-9.4.50/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java | 8 jetty9-9.4.50/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientSession.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AbstractTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AsyncIOTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/AsyncServletTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/BufferingFlowControlStrategyTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/Client.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/ConcurrentStreamCreationTest.java | 5 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/ConnectTimeoutTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/EmptyHttpServlet.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStalledTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlStrategyTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/FlowControlWindowsTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/GoAwayTest.java | 16 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/IdleTimeoutTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/InterleavingTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/MaxPushedStreamsTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PingTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PrefaceTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PriorityTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/ProxyProtocolTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/ProxyTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PushCacheFilterTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/RawHTTP2ProxyTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/SessionFailureTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/SimpleFlowControlStrategyTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/SmallThreadPoolLoadTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/StreamCloseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/StreamCountTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/StreamResetTest.java | 2 jetty9-9.4.50/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/TrailersTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/pom.xml | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/BufferingFlowControlStrategy.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/CloseState.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/ErrorCode.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/Flags.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/FlowControlStrategy.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Cipher.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Flusher.java | 68 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java | 26 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java | 72 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/ISession.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/IStream.java | 15 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/SimpleFlowControlStrategy.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/api/Session.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/api/Stream.java | 12 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/api/server/ServerSessionListener.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/ContinuationFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/DataFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/DisconnectFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/FailureFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/Frame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/FrameType.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/GoAwayFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/HeadersFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/PingFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/PrefaceFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/PriorityFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/PushPromiseFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/ResetFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/SettingsFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/StreamFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/UnknownFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/frames/WindowUpdateFrame.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/DataGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/FrameGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/Generator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/GoAwayGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/HeaderGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/HeadersGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/NoOpGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/PingGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/PrefaceGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/PriorityGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/PushPromiseGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/ResetGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/SettingsGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/WindowUpdateGenerator.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/BodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ContinuationBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/DataBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/GoAwayBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockFragments.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeadersBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/Parser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PingBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PrefaceParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PriorityBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PushPromiseBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/RateControl.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ResetBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ServerParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/SettingsBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/UnknownBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/WindowRateControl.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/WindowUpdateBodyParser.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ContinuationParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/DataGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/FrameFloodTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/GoAwayGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/MaxFrameSizeParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PingGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PriorityGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PushPromiseGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ResetGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/SettingsGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/UnknownParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/WindowUpdateGenerateParseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/pom.xml | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/AuthorityHttpField.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackException.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackFieldPreEncoder.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/NBitInteger.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/StaticTableHttpField.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackContextTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackEncoderTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java | 2 jetty9-9.4.50/jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/NBitIntegerTest.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/pom.xml | 6 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpChannelOverHTTP2.java | 16 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpClientTransportOverHTTP2.java | 12 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpConnectionOverHTTP2.java | 24 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpDestinationOverHTTP2.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpReceiverOverHTTP2.java | 8 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/main/java/org/eclipse/jetty/http2/client/http/HttpSenderOverHTTP2.java | 7 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/AbstractTest.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/BlockedWritesWithSmallThreadPoolTest.java | 285 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/ContentLengthTest.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/DirectHTTP2OverTLSTest.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/EmptyServerHandler.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/HttpClientTransportOverHTTP2Test.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/MaxConcurrentStreamsTest.java | 247 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/MultiplexedConnectionPoolTest.java | 232 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/PushedResourcesTest.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/RequestTrailersTest.java | 2 jetty9-9.4.50/jetty-http2/http2-http-client-transport/src/test/java/org/eclipse/jetty/http2/client/http/ResponseTrailerTest.java | 2 jetty9-9.4.50/jetty-http2/http2-server/pom.xml | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/config/etc/jetty-http2.xml | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/config/etc/jetty-http2c.xml | 7 jetty9-9.4.50/jetty-http2/http2-server/src/main/config/modules/http2.mod | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/config/modules/http2c.mod | 9 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java | 4 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2CServerConnectionFactory.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnection.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerSession.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java | 16 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpTransportOverHTTP2.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/RawHTTP2ServerConnectionFactory.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/AbstractServerTest.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/BadURITest.java | 154 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/CloseTest.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/H2SpecServer.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/HTTP2CServer.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/HTTP2CServerTest.java | 2 jetty9-9.4.50/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/HTTP2ServerTest.java | 2 jetty9-9.4.50/jetty-http2/pom.xml | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/pom.xml | 18 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/config/etc/sessions/infinispan/infinispan-common.xml | 1 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/config/modules/sessions/infinispan/infinispan-common.mod | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/BoundDelegatingInputStream.java | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSerializationContextInitializer.java | 51 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionData.java | 3 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionDataStore.java | 24 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionDataStoreFactory.java | 14 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionLegacyConverter.java | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/NullQueryManagerFactory.java | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/QueryManager.java | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/QueryManagerFactory.java | 2 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/SessionDataMarshaller.java | 48 jetty9-9.4.50/jetty-infinispan/infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/WebAppMarshaller.java | 78 jetty9-9.4.50/jetty-infinispan/infinispan-embedded-query/pom.xml | 22 jetty9-9.4.50/jetty-infinispan/infinispan-embedded-query/src/main/assembly/config.xml | 4 jetty9-9.4.50/jetty-infinispan/infinispan-embedded-query/src/main/java/org/eclipse/jetty/session/infinispan/EmbeddedQueryManager.java | 23 jetty9-9.4.50/jetty-infinispan/infinispan-embedded-query/src/test/java/org/eclipse/jetty/server/session/infinispan/EmbeddedQueryManagerTest.java | 8 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/pom.xml | 28 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/assembly/config.xml | 4 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-template/etc/sessions/infinispan/infinispan-embedded.xml | 16 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-template/modules/infinispan-embedded.mod | 10 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-template/modules/session-store-infinispan-embedded.mod | 25 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-template/modules/sessions/infinispan/embedded/infinispan-embedded-libs.mod | 16 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-template/modules/sessions/infinispan/embedded/infinispan-embedded-serverclasses.mod | 12 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-template/modules/sessions/infinispan/embedded/infinispan.xml | 5 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-templates/etc/sessions/infinispan/infinispan-embedded.xml | 16 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-templates/modules/infinispan-embedded.mod | 10 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-templates/modules/session-store-infinispan-embedded.mod | 24 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-templates/modules/sessions/infinispan/embedded/infinispan-embedded-libs.mod | 16 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-templates/modules/sessions/infinispan/embedded/infinispan-embedded-serverclasses.mod | 12 jetty9-9.4.50/jetty-infinispan/infinispan-embedded/src/main/config-templates/modules/sessions/infinispan/embedded/infinispan.xml | 5 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/pom.xml | 38 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/main/assembly/config.xml | 4 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/main/config-template/etc/sessions/infinispan/infinispan-remote-query.xml | 43 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/main/config-template/modules/infinispan-remote-query.mod | 4 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/main/config-template/modules/sessions/infinispan/remote/other_proto_marshallers.xml | 38 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/main/java/org/eclipse/jetty/session/infinispan/RemoteQueryManager.java | 27 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/main/java/org/eclipse/jetty/session/infinispan/RemoteQueryManagerFactory.java | 3 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/test/java/org/eclipse/jetty/server/session/infinispan/RemoteQueryManagerTest.java | 141 jetty9-9.4.50/jetty-infinispan/infinispan-remote-query/src/test/resources/config.yaml | 4 jetty9-9.4.50/jetty-infinispan/infinispan-remote/pom.xml | 31 jetty9-9.4.50/jetty-infinispan/infinispan-remote/src/main/assembly/config.xml | 4 jetty9-9.4.50/jetty-infinispan/infinispan-remote/src/main/config-template/etc/sessions/infinispan/infinispan-remote.xml | 36 jetty9-9.4.50/jetty-infinispan/infinispan-remote/src/main/config-template/modules/session-store-infinispan-remote.mod | 4 jetty9-9.4.50/jetty-infinispan/infinispan-remote/src/main/config-template/modules/sessions/infinispan/remote/resources/hotrod-client.properties | 1 jetty9-9.4.50/jetty-infinispan/pom.xml | 2 jetty9-9.4.50/jetty-io/pom.xml | 8 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/AbstractByteBufferPool.java | 36 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/AbstractConnection.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/AbstractEndPoint.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ArrayByteBufferPool.java | 135 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ByteArrayEndPoint.java | 22 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferAccumulator.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferOutputStream.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferOutputStream2.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferPool.java | 76 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ChannelEndPoint.java | 3 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ClientConnectionFactory.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/Connection.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ConnectionStatistics.java | 321 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/CyclicTimeout.java | 20 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/CyclicTimeouts.java | 199 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/EndPoint.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/EofException.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/FillInterest.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/IdleTimeout.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/IncludeExcludeConnectionStatistics.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/LeakTrackingByteBufferPool.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/LogarithmicArrayByteBufferPool.java | 112 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/MappedByteBufferPool.java | 96 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/NegotiatingClientConnection.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/NegotiatingClientConnectionFactory.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficListener.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSelectChannelEndPoint.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSocketChannelEndPoint.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/NullByteBufferPool.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/QuietException.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/RetainableByteBuffer.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/RuntimeIOException.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/SelectChannelEndPoint.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/SocketChannelEndPoint.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/WriteFlusher.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/WriterOutputStream.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/jmx/ConnectionStatisticsMBean.java | 50 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/package-info.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/ALPNProcessor.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslClientConnectionFactory.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java | 56 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslHandshakeListener.java | 2 jetty9-9.4.50/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/package-info.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/ArrayByteBufferPoolTest.java | 64 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/ByteBufferAccumulatorTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/CyclicTimeoutTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/CyclicTimeoutsTest.java | 266 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/IOTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/IdleTimeoutTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/MappedByteBufferPoolTest.java | 39 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/NIOTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/SelectorManagerTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointOpenCloseTest.java | 53 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java | 2 jetty9-9.4.50/jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java | 2 jetty9-9.4.50/jetty-jaas/pom.xml | 64 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/JAASLoginService.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/JAASPrincipal.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/JAASRole.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/JAASUserPrincipal.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/PropertyUserStoreManager.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/callback/AbstractCallbackHandler.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/callback/DefaultCallbackHandler.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/callback/ObjectCallback.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/callback/RequestParameterCallback.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/callback/ServletRequestCallback.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/callback/package-info.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/package-info.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractDatabaseLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/AbstractLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/DataSourceLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/JDBCLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/LdapLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/PropertyFileLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/UserInfo.java | 2 jetty9-9.4.50/jetty-jaas/src/main/java/org/eclipse/jetty/jaas/spi/package-info.java | 2 jetty9-9.4.50/jetty-jaas/src/test/java/org/eclipse/jetty/jaas/JAASLdapLoginServiceTest.java | 2 jetty9-9.4.50/jetty-jaas/src/test/java/org/eclipse/jetty/jaas/JAASLoginServiceTest.java | 2 jetty9-9.4.50/jetty-jaas/src/test/java/org/eclipse/jetty/jaas/TestLoginModule.java | 2 jetty9-9.4.50/jetty-jaas/src/test/java/org/eclipse/jetty/jaas/spi/PropertyFileLoginModuleTest.java | 2 jetty9-9.4.50/jetty-jaspi/pom.xml | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/JaspiAuthenticator.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/JaspiAuthenticatorFactory.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/JaspiMessageInfo.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/ServletCallbackHandler.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/SimpleAuthConfig.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/callback/CredentialValidationCallback.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/callback/package-info.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/BaseAuthModule.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/BasicAuthModule.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/ClientCertAuthModule.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/DigestAuthModule.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/FormAuthModule.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/UserInfo.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/modules/package-info.java | 2 jetty9-9.4.50/jetty-jaspi/src/main/java/org/eclipse/jetty/security/jaspi/package-info.java | 2 jetty9-9.4.50/jetty-jaspi/src/test/java/org/eclipse/jetty/security/jaspi/HttpHeaderAuthModule.java | 2 jetty9-9.4.50/jetty-jaspi/src/test/java/org/eclipse/jetty/security/jaspi/JaspiTest.java | 2 jetty9-9.4.50/jetty-jmh/pom.xml | 15 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/client/jmh/ConnectionPoolsBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/http/jmh/HttpMethodBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/http/jmh/MultiPartBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/io/jmh/ByteBufferBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/requestlog/jmh/RequestLogBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/server/jmh/DeflaterPoolBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/server/jmh/ForwardBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/server/jmh/ListVsMapBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/ArrayByteBufferPoolBenchmark.java | 72 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/PoolStrategyBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/StringIsEmptyBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/StringReplaceBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/B64CodeBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheNoTick.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheNoTickBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheSimpleDateFormat.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheSimpleDateFormatBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/log/LogCondensePackageStringBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/jmh/ReservedThreadPoolBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/jmh/ThreadPoolBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/strategy/jmh/EWYKBenchmark.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/strategy/jmh/TestConnection.java | 2 jetty9-9.4.50/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/strategy/jmh/TestServer.java | 2 jetty9-9.4.50/jetty-jmx/pom.xml | 4 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ConnectorServer.java | 2 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java | 2 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java | 2 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java | 2 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/package-info.java | 2 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/util/log/jmx/LogMBean.java | 2 jetty9-9.4.50/jetty-jmx/src/main/java/org/eclipse/jetty/util/log/jmx/package-info.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/Base.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/Derived.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/DerivedExtended.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/DerivedManaged.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/Managed.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/Signature.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/SuperManaged.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/jmx/DerivedMBean.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/com/acme/jmx/ManagedMBean.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ConnectorServerTest.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerLifeCycleTest.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/PojoTest.java | 2 jetty9-9.4.50/jetty-jmx/src/test/java/org/eclipse/jetty/util/log/jmx/LogMBeanTest.java | 2 jetty9-9.4.50/jetty-jndi/pom.xml | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/BindingEnumeration.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/ContextFactory.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/DataSourceCloser.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/InitialContextFactory.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NameEnumeration.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NamingContext.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NamingUtil.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/factories/MailSessionReference.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/factories/package-info.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaNameParser.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaRootURLContext.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaURLContextFactory.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/package-info.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/local/localContextRoot.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/local/package-info.java | 2 jetty9-9.4.50/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/package-info.java | 2 jetty9-9.4.50/jetty-jndi/src/test/java/org/eclipse/jetty/jndi/factories/TestMailSessionReference.java | 2 jetty9-9.4.50/jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestJNDI.java | 2 jetty9-9.4.50/jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestLocalJNDI.java | 2 jetty9-9.4.50/jetty-jspc-maven-plugin/pom.xml | 68 jetty9-9.4.50/jetty-jspc-maven-plugin/src/main/java/org/eclipse/jetty/jspc/plugin/JspcMojo.java | 2 jetty9-9.4.50/jetty-jspc-maven-plugin/src/main/java/org/eclipse/jetty/jspc/plugin/package-info.java | 2 jetty9-9.4.50/jetty-maven-plugin/README_INTEGRATION_TEST.md | 4 jetty9-9.4.50/jetty-maven-plugin/pom.xml | 70 jetty9-9.4.50/jetty-maven-plugin/src/it/it-parent-pom/pom.xml | 6 jetty9-9.4.50/jetty-maven-plugin/src/it/javax-annotation-api/invoker.properties | 1 jetty9-9.4.50/jetty-maven-plugin/src/it/javax-annotation-api/pom.xml | 102 jetty9-9.4.50/jetty-maven-plugin/src/it/javax-annotation-api/postbuild.groovy | 21 jetty9-9.4.50/jetty-maven-plugin/src/it/javax-annotation-api/src/config/jetty.xml | 39 jetty9-9.4.50/jetty-maven-plugin/src/it/javax-annotation-api/src/main/java/test/App.java | 65 jetty9-9.4.50/jetty-maven-plugin/src/it/javax-annotation-api/src/main/resources/my.properties | 1 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-cdi-run-forked/src/main/java/test/Greeter.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/api/src/main/java/test/Api.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/web/src/main/java/test/ClassLoadingTestingServletContextListener.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_distro_mojo_it/HelloServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_distro_mojo_it/PingServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_forked_mojo_it/HelloServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_forked_mojo_it/PingServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/HelloServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/PingServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-it/jetty-simple-base/src/test/java/org/eclipse/jetty/its/jetty_run_mojo_it_test/HelloTestServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyAnnotation.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyServletContainerInitializer.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyWebApp/src/main/java/jettyissue/NormalClass.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-jsp/src/main/java/com/acme/Counter.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-multi-module-single-war-it/common/src/main/java/mca/common/CommonService.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-multi-module-single-war-it/module/module-api/src/main/java/mca/module/ModuleApi.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-multi-module-single-war-it/module/module-impl/src/main/java/mca/module/ModuleImpl.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-mojo-multi-module-single-war-it/webapp-war/src/main/java/mca/webapp/WebAppServletListener.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/HelloServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-war-exploded-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/PingServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/HelloServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-run-war-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/PingServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/HelloServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/PingServlet.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-client/src/main/java/org/olamy/App.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-server/src/main/java/org/olamy/GreetingServiceImpl.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-shared/src/main/java/org/olamy/FieldVerifier.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-shared/src/main/java/org/olamy/GreetingResponse.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-shared/src/main/java/org/olamy/GreetingService.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/it/run-mojo-gwt-it/beer-shared/src/main/java/org/olamy/GreetingServiceAsync.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/AbstractJettyMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/ConsoleScanner.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyDeployWar.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyEffectiveWebXml.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunDistro.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunForkedMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunWarExplodedMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyRunWarMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyStartMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyStopMojo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/JettyWebAppContext.java | 3 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenQuickStartConfiguration.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenServerConnector.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/MavenWebInfConfiguration.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/Overlay.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/OverlayConfig.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/PluginLog.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/ScanPattern.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/ScanTargetPattern.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/SelectiveJarResource.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/ServerConnectorListener.java | 5 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/ServerListener.java | 42 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/ServerSupport.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/Starter.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/SystemProperties.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/SystemProperty.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/WarPluginInfo.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/WebAppPropertyConverter.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/package-info.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/main/java/org/eclipse/jetty/maven/plugin/utils/MavenProjectHelper.java | 2 jetty9-9.4.50/jetty-maven-plugin/src/test/java/org/eclipse/jetty/maven/plugin/it/TestGetContent.java | 2 jetty9-9.4.50/jetty-memcached/jetty-memcached-sessions/pom.xml | 4 jetty9-9.4.50/jetty-memcached/jetty-memcached-sessions/src/main/config/modules/sessions/session-data-cache/xmemcached.mod | 5 jetty9-9.4.50/jetty-memcached/jetty-memcached-sessions/src/main/java/org/eclipse/jetty/memcached/session/MemcachedSessionDataMap.java | 2 jetty9-9.4.50/jetty-memcached/jetty-memcached-sessions/src/main/java/org/eclipse/jetty/memcached/session/MemcachedSessionDataMapFactory.java | 2 jetty9-9.4.50/jetty-memcached/jetty-memcached-sessions/src/test/java/org/eclipse/jetty/memcached/session/TestMemcachedSessions.java | 2 jetty9-9.4.50/jetty-memcached/pom.xml | 2 jetty9-9.4.50/jetty-nosql/pom.xml | 4 jetty9-9.4.50/jetty-nosql/src/main/config/modules/session-store-mongo.mod | 3 jetty9-9.4.50/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/NoSqlSessionDataStore.java | 2 jetty9-9.4.50/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionDataStore.java | 2 jetty9-9.4.50/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoUtils.java | 2 jetty9-9.4.50/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/package-info.java | 2 jetty9-9.4.50/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/package-info.java | 2 jetty9-9.4.50/jetty-openid/pom.xml | 2 jetty9-9.4.50/jetty-openid/src/main/config/etc/jetty-openid.xml | 1 jetty9-9.4.50/jetty-openid/src/main/config/modules/openid.mod | 7 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/JwtDecoder.java | 7 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdAuthenticator.java | 283 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdAuthenticatorFactory.java | 2 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdConfiguration.java | 25 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdCredentials.java | 51 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdLoginService.java | 2 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdUserIdentity.java | 2 jetty9-9.4.50/jetty-openid/src/main/java/org/eclipse/jetty/security/openid/OpenIdUserPrincipal.java | 2 jetty9-9.4.50/jetty-openid/src/test/java/org/eclipse/jetty/security/openid/JwtDecoderTest.java | 2 jetty9-9.4.50/jetty-openid/src/test/java/org/eclipse/jetty/security/openid/JwtEncoder.java | 2 jetty9-9.4.50/jetty-openid/src/test/java/org/eclipse/jetty/security/openid/OpenIdAuthenticationTest.java | 2 jetty9-9.4.50/jetty-openid/src/test/java/org/eclipse/jetty/security/openid/OpenIdCredentialsTest.java | 45 jetty9-9.4.50/jetty-openid/src/test/java/org/eclipse/jetty/security/openid/OpenIdProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-alpn/pom.xml | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-jsp/pom.xml | 36 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-jsp/src/main/java/org/eclipse/jetty/osgi/boot/jasper/ContainerTldBundleDiscoverer.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-jsp/src/main/java/org/eclipse/jetty/osgi/boot/jasper/JSTLBundleDiscoverer.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-jsp/src/main/java/org/eclipse/jetty/osgi/boot/jsp/FragmentActivator.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-warurl/pom.xml | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-warurl/src/main/java/org/eclipse/jetty/osgi/boot/warurl/WarUrlActivator.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-warurl/src/main/java/org/eclipse/jetty/osgi/boot/warurl/WarUrlStreamHandler.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-warurl/src/main/java/org/eclipse/jetty/osgi/boot/warurl/internal/WarBundleManifestGenerator.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot-warurl/src/main/java/org/eclipse/jetty/osgi/boot/warurl/internal/WarURLConnection.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/pom.xml | 21 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationConfiguration.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/annotations/AnnotationParser.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractContextProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractOSGiApp.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/AbstractWebAppProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleContextProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/BundleWebAppProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/JettyBootstrapActivator.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiDeployer.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiServerConstants.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiUndeployer.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiWebInfConfiguration.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/OSGiWebappConstants.java | 4 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/ServiceContextProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/ServiceProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/ServiceWebAppProvider.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/DefaultJettyAtJettyHomeHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/JettyServerServiceTracker.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/serverfactory/ServerInstanceWrapper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/LibExtClassLoaderHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/internal/webapp/OSGiWebappClassLoader.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/BundleClassLoaderHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/BundleClassLoaderHelperFactory.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/BundleFileLocatorHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/BundleFileLocatorHelperFactory.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/EventSender.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/FakeURLClassLoader.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/OSGiClassLoader.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/ServerConnectorListener.java | 5 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/TldBundleDiscoverer.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/Util.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/internal/DefaultBundleClassLoaderHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/internal/DefaultFileLocatorHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-boot/src/main/java/org/eclipse/jetty/osgi/boot/utils/internal/PackageAdminServiceTracker.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-httpservice/pom.xml | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-httpservice/src/main/java/org/eclipse/jetty/osgi/httpservice/HttpServiceErrorHandlerHelper.java | 2 jetty9-9.4.50/jetty-osgi/jetty-osgi-httpservice/src/main/java/org/eclipse/jetty/osgi/httpservice/HttpServiceErrorPageErrorHandler.java | 2 jetty9-9.4.50/jetty-osgi/pom.xml | 58 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-context/pom.xml | 11 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-context/src/main/java/com/acme/osgi/Activator.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-fragment/pom.xml | 11 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-server/pom.xml | 11 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-server/src/main/java/com/acme/osgi/Activator.java | 10 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-webapp-resources/pom.xml | 50 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-webapp-resources/src/main/java/com/acme/HelloWorld.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-webapp/pom.xml | 11 jetty9-9.4.50/jetty-osgi/test-jetty-osgi-webapp/src/main/java/com/acme/osgi/Activator.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/pom.xml | 9 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/SimpleEchoSocket.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/SimpleJavaxWebSocket.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiAnnotationParser.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootContextAsService.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootHTTP2.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootHTTP2Conscrypt.java | 8 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootHTTP2JDK9.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWebAppAsService.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithJavaxWebSocket.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithJsp.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithWebSocket.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiClasspathResources.java | 2 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestOSGiUtil.java | 12 jetty9-9.4.50/jetty-osgi/test-jetty-osgi/src/test/resources/module-info.java | 2 jetty9-9.4.50/jetty-plus/pom.xml | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/ContainerInitializer.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/Injection.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/InjectionCollection.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/LifeCycleCallback.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/LifeCycleCallbackCollection.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PostConstructCallback.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/PreDestroyCallback.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/RunAs.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/RunAsCollection.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/annotation/package-info.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/EnvEntry.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/Link.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/NamingDump.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/NamingEntry.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/NamingEntryUtil.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/Resource.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/Transaction.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/jndi/package-info.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/security/DataSourceLoginService.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/security/package-info.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/EnvConfiguration.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusConfiguration.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusDecorator.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/PlusDescriptorProcessor.java | 2 jetty9-9.4.50/jetty-plus/src/main/java/org/eclipse/jetty/plus/webapp/package-info.java | 2 jetty9-9.4.50/jetty-plus/src/test/java/org/eclipse/jetty/plus/annotation/LifeCycleCallbackCollectionTest.java | 2 jetty9-9.4.50/jetty-plus/src/test/java/org/eclipse/jetty/plus/jndi/NamingEntryUtilTest.java | 2 jetty9-9.4.50/jetty-plus/src/test/java/org/eclipse/jetty/plus/jndi/TestNamingEntries.java | 2 jetty9-9.4.50/jetty-plus/src/test/java/org/eclipse/jetty/plus/jndi/TestNamingEntryUtil.java | 2 jetty9-9.4.50/jetty-plus/src/test/java/org/eclipse/jetty/plus/webapp/PlusDescriptorProcessorTest.java | 2 jetty9-9.4.50/jetty-proxy/pom.xml | 8 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AfterContentTransformer.java | 2 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AsyncMiddleManServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AsyncProxyServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/BalancerServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java | 4 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyConnection.java | 9 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/package-info.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/AbstractConnectHandlerTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/AsyncMiddleManServletTest.java | 4 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/BalancerServletTest.java | 48 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/CachingProxyServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ClientAuthProxyTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ConnectHandlerSSLTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ConnectHandlerTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/EchoHttpServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/EmptyHttpServlet.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/EmptyServerHandler.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ForwardProxyServerTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ForwardProxyTLSServerTest.java | 59 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServer.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletFailureTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletLoadTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ProxyServletTest.java | 2 jetty9-9.4.50/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ReverseProxyTest.java | 2 jetty9-9.4.50/jetty-quickstart/pom.xml | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/AttributeNormalizer.java | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureDescriptorProcessor.java | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/PreconfigureQuickStartWar.java | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartConfiguration.java | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorGenerator.java | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartDescriptorProcessor.java | 2 jetty9-9.4.50/jetty-quickstart/src/main/java/org/eclipse/jetty/quickstart/QuickStartWebApp.java | 2 jetty9-9.4.50/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooContextListener.java | 2 jetty9-9.4.50/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/FooServlet.java | 2 jetty9-9.4.50/jetty-quickstart/src/test/java/org/eclipse/jetty/quickstart/TestQuickStart.java | 2 jetty9-9.4.50/jetty-rewrite/pom.xml | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/RewriteCustomizer.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/CompactPathRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/CookiePatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ForceRequestHeaderValueRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderPatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderRegexRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/MsieSslRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/PatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectPatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectRegexRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java | 10 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RegexRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ResponsePatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteRegexRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/Rule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/TerminatingPatternRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/TerminatingRegexRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ValidUrlRule.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainer.java | 2 jetty9-9.4.50/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/package-info.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/AbstractRuleTestCase.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ForceRequestHeaderValueRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/HeaderPatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/HeaderRegexRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/MsieSslRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/PatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RedirectPatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RedirectRegexRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RegexRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ResponsePatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewriteHandlerTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewritePatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewriteRegexRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/TerminatingPatternRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/TerminatingRegexRuleTest.java | 2 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ValidUrlRuleTest.java | 28 jetty9-9.4.50/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainerTest.java | 2 jetty9-9.4.50/jetty-runner/pom.xml | 3 jetty9-9.4.50/jetty-runner/src/main/java/org/eclipse/jetty/runner/Runner.java | 2 jetty9-9.4.50/jetty-runner/src/main/java/org/eclipse/jetty/runner/package-info.java | 2 jetty9-9.4.50/jetty-security/pom.xml | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/AbstractLoginService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/AbstractUserAuthentication.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/Authenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/ConfigurableSpnegoLoginService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintAware.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintMapping.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/ConstraintSecurityHandler.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/DefaultAuthenticatorFactory.java | 4 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/DefaultIdentityService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/DefaultUserIdentity.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/HashLoginService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/IdentityService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/JDBCLoginService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/LoggedOutAuthentication.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/LoginService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/PropertyUserStore.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/RoleInfo.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/RoleRunAsToken.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/RunAsToken.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/SecurityHandler.java | 20 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/ServerAuthException.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoLoginService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoUserIdentity.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/SpnegoUserPrincipal.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/UserAuthentication.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/UserDataConstraint.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/UserStore.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/AuthorizationService.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/BasicAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ClientCertAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/ConfigurableSpnegoAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DeferredAuthentication.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/DigestAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/FormAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginCallback.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/LoginCallbackImpl.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SessionAuthentication.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticator.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/authentication/package-info.java | 2 jetty9-9.4.50/jetty-security/src/main/java/org/eclipse/jetty/security/package-info.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/AliasedConstraintTest.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/ConstraintTest.java | 41 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/DataConstraintsTest.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/DefaultIdentityServiceTest.java | 94 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/HashLoginServiceTest.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/PropertyUserStoreTest.java | 4 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/SessionAuthenticationTest.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/SpecExampleConstraintTest.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/TestLoginService.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/UnauthenticatedTest.java | 150 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/UserStoreTest.java | 2 jetty9-9.4.50/jetty-security/src/test/java/org/eclipse/jetty/security/authentication/SpnegoAuthenticatorTest.java | 2 jetty9-9.4.50/jetty-server/pom.xml | 27 jetty9-9.4.50/jetty-server/src/main/config/etc/jetty-bytebufferpool-logarithmic.xml | 11 jetty9-9.4.50/jetty-server/src/main/config/etc/jetty-bytebufferpool.xml | 4 jetty9-9.4.50/jetty-server/src/main/config/modules/bytebufferpool-logarithmic.mod | 30 jetty9-9.4.50/jetty-server/src/main/config/modules/bytebufferpool.mod | 11 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java | 4 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNCSARequestLog.java | 4 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNetworkConnector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AcceptRateLimit.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AllowedResourceAliasChecker.java | 243 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncAttributes.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContextEvent.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContextState.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncNCSARequestLog.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncRequestLogWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Authentication.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/CachedContentFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ClassLoaderDump.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ConnectionLimit.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ConnectorStatistics.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/CookieCutter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/CustomRequestLog.java | 6 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/DebugListener.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/DetectorConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Dispatcher.java | 37 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/EncodingHttpWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ForwardedRequestCustomizer.java | 5 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HandlerContainer.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HomeBaseWarning.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HostHeaderCustomizer.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java | 111 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelListeners.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelOverHttp.java | 8 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java | 61 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConfiguration.java | 76 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java | 33 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java | 172 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpInputOverHTTP.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpOutput.java | 51 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpTransport.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/HttpWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/InclusiveByteRange.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Iso88591HttpWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/LowResourceMonitor.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/MultiPartCleanerListener.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/MultiPartFormDataCompliance.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/MultiParts.java | 28 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/NCSARequestLog.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/NegotiatingServerConnection.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/NegotiatingServerConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/NetworkConnector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/NetworkTrafficServerConnector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/OptionalSslConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ProxyConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ProxyCustomizer.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/PushBuilder.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/PushBuilderImpl.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/QuietServletException.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java | 217 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/RequestLog.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/RequestLogCollection.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/RequestLogWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceContentFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceService.java | 40 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java | 38 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ResponseWriter.java | 14 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/SameFileAliasChecker.java | 9 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnectionStatistics.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ServletAttributes.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ServletRequestHttpWrapper.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ServletResponseHttpWrapper.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/SessionIdManager.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/ShutdownMonitor.java | 10 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Slf4jRequestLog.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Slf4jRequestLogWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/SocketCustomizationListener.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/SslConnectionFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/SymlinkAllowedResourceAliasChecker.java | 94 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/UserIdentity.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/Utf8HttpWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandlerContainer.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AllowSymLinkAliasChecker.java | 9 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AsyncDelayHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java | 195 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java | 372 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java | 14 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/FileBufferedResponseHandler.java | 259 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerList.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerWrapper.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HotSwapHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IPAccessHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IdleTimeoutHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ManagedAttributeListener.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/RequestLogHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java | 5 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ScopedHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SecuredRedirectHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SizeLimitHandler.java | 209 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java | 34 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ThreadLimitHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java | 15 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHttpInputInterceptor.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHttpOutputInterceptor.java | 8 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/package-info.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/jmx/AbstractHandlerMBean.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/jmx/ContextHandlerMBean.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/jmx/package-info.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/handler/package-info.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/AbstractConnectorMBean.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/ServerMBean.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/package-info.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/nio/NetworkTrafficSelectChannelConnector.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/nio/package-info.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/package-info.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/resource/ByteBufferRangeWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/resource/HttpContentRangeWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/resource/InputStreamRangeWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/resource/RangeWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/resource/SeekableByteChannelRangeWriter.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCache.java | 5 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionCacheFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionDataStore.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStore.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/DatabaseAdaptor.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionCache.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionCacheFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/DefaultSessionIdManager.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStore.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/HouseKeeper.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStore.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionCache.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionCacheFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStore.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java | 15 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionCache.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionCacheFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionContext.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionData.java | 5 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataMap.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataMapFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStore.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStoreFactory.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionHandler.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/UnreadableSessionDataException.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/UnwriteableSessionDataException.java | 2 jetty9-9.4.50/jetty-server/src/main/java/org/eclipse/jetty/server/session/package-info.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/AsyncCompletionTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/AsyncRequestReadTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/AsyncStressTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/BlockingTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ClassLoaderDumpTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectionOpenCloseTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorCloseTestBase.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterLenientTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/DelayedServerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/DetectorConnectionTest.java | 5 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/DumpHandler.java | 4 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ErrorHandlerTest.java | 39 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ExtendedServerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ForwardedRequestCustomizerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/GracefulStopTest.java | 5 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HalfCloseTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HostHeaderCustomizerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpChannelEventTest.java | 54 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConfigurationAuthorityOverrideTest.java | 771 + jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java | 72 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpInputAsyncStateTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpInputTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpManyWaysToAsyncCommitTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpManyWaysToCommitTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpOutputTest.java | 195 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestFixture.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpVersionCustomizerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/HttpWriterTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/InclusiveByteRangeTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/InsufficientThreadsDetectionTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/LargeHeaderTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/LocalAsyncContextTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/LocalConnectorTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/MockConnector.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/NotAcceptingTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/OptionalSslConnectionTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ProxyConnectionTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ProxyCustomizerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ProxyProtocolTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java | 356 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ResourceCacheTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java | 837 + jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorAsyncContextTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorCloseTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorHttpServerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorTimeoutTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServletRequestWrapperTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ServletWriterTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ShutdownMonitorTest.java | 102 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/SlowClientWithPipelinedRequestTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/StressTest.java | 9 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/SuspendHandler.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ThreadStarvationTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/AllowAllVerifier.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/AllowSymLinkAliasCheckerTest.java | 5 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/BufferedResponseHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java | 47 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DebugHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/FileBufferedResponseHandlerTest.java | 696 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/IPAccessHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/InetAccessHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/NcsaRequestLogTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerRangeTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ScopedHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ShutdownHandlerTest.java | 4 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SizeLimitHandlerTest.java | 260 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java | 59 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ThreadLimitHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/resource/RangeWriterTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/session/HouseKeeperTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/session/SessionCookieTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/session/SessionHandlerTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLCloseTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLReadEOFAfterResponseTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SelectChannelServerSslTest.java | 307 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/ServerConnectorSslServerTest.java | 263 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SlowClientsTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java | 51 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslConnectionFactoryTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslContextFactoryReloadTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslSelectChannelTimeoutTest.java | 2 jetty9-9.4.50/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java | 2 jetty9-9.4.50/jetty-servlet/pom.xml | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/BaseHolder.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DecoratingListener.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java | 6 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ErrorPageErrorHandler.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterHolder.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/FilterMapping.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Holder.java | 3 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java | 12 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/JspPropertyGroupServlet.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ListenerHolder.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/NoJspServlet.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletContextHandler.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java | 72 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHolder.java | 21 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletMapping.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Source.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/StatisticsServlet.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/jmx/FilterMappingMBean.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/jmx/HolderMBean.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/jmx/ServletMappingMBean.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/jmx/package-info.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/listener/ContainerInitializer.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/listener/ELContextCleaner.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/listener/IntrospectorCleaner.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/listener/package-info.java | 2 jetty9-9.4.50/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/package-info.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextDispatchWithQueryStrings.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextListenersTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncContextTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncDispatchEncodingTest.java | 167 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncListenerTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletIOTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletLongPollTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/AsyncServletTest.java | 18 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/CacheControlHeaderTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ComplianceViolations2616Test.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ComponentWrapTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/CustomRequestLogTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultHandlerTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletRangesTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DefaultServletTest.java | 82 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherForwardTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/DispatcherTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/EncodedURITest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ErrorPageTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/FilterHolderTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/FormTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerBreakEvenSizeTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerCommitTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerIsHandledTest.java | 131 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/GzipHandlerTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/IncludedServletTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/InitServletTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/InvokerTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/MultiPartServletTest.java | 89 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/PostServletTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/RequestHeadersTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/RequestURITest.java | 51 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ResponseHeadersTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/SSLAsyncIOServletTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletContextHandlerTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletContextResourcesTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletHandlerTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletHolderTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletLifeCycleTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletRequestLogTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletTester.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/ServletWrapperTest.java | 2 jetty9-9.4.50/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/StatisticsServletTest.java | 2 jetty9-9.4.50/jetty-servlets/pom.xml | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/AsyncGzipFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CGI.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CloseableDoSFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ConcatServlet.java | 6 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/CrossOriginFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DataRateLimitedServlet.java | 9 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java | 14 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/EventSource.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/EventSourceServlet.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/HeaderFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludableGzipFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludeExcludeBasedFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/MultiPartFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/PushCacheFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/PushSessionCacheFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/PutFilter.java | 10 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/QoSFilter.java | 5 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/WelcomeFilter.java | 10 jetty9-9.4.50/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/package-info.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/AsyncManipFilter.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/AsyncScheduledDispatchWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/AsyncTimeoutCompleteWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/AsyncTimeoutDispatchWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipContentLengthTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipDefaultNoRecompressTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipDefaultTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipTester.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/Hex.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/IncludedGzipMinSizeTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/IncludedGzipTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/NoOpOutputStream.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/PassThruInputStream.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestDirContentServlet.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestMinGzipSizeServlet.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletBufferTypeLengthWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletLengthStreamTypeWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletLengthTypeStreamWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletStreamLengthTypeWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletStreamLengthTypeWriteWithFlush.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletStreamTypeLengthWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletTypeLengthStreamWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestServletTypeStreamLengthWrite.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/server/handler/gzip/TestStaticMimeTypeServlet.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/AbstractDoSFilterTest.java | 6 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CloseableDoSFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ConcatServletTest.java | 85 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/CrossOriginFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DataRateLimitedServletTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterJMXTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java | 5 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/EventSourceServletTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterLayeredTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/HeaderFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/IncludeExcludeBasedFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/MultipartFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/PutFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/QoSFilterTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ThreadStarvationTest.java | 2 jetty9-9.4.50/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/WelcomeFilterTest.java | 143 jetty9-9.4.50/jetty-spring/pom.xml | 12 jetty9-9.4.50/jetty-spring/src/main/java/org/eclipse/jetty/spring/Main.java | 5 jetty9-9.4.50/jetty-spring/src/main/java/org/eclipse/jetty/spring/SpringConfigurationProcessor.java | 11 jetty9-9.4.50/jetty-spring/src/main/java/org/eclipse/jetty/spring/SpringConfigurationProcessorFactory.java | 4 jetty9-9.4.50/jetty-spring/src/main/java/org/eclipse/jetty/spring/package-info.java | 5 jetty9-9.4.50/jetty-spring/src/test/java/org/eclipse/jetty/spring/SpringXmlConfigurationTest.java | 2 jetty9-9.4.50/jetty-spring/src/test/java/org/eclipse/jetty/spring/TestConfiguration.java | 2 jetty9-9.4.50/jetty-spring/src/test/resources/org/eclipse/jetty/spring/configure.xml | 4 jetty9-9.4.50/jetty-start/pom.xml | 25 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/BaseBuilder.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Classpath.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/CommandLineBuilder.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/FS.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/FileInitializer.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/JarVersion.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Licensing.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java | 7 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/NaturalSort.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/PathMatchers.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java | 32 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/PropsException.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/RawArgs.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java | 69 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/StartIni.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/TextFile.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/UsageException.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Utils.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/Version.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/builders/StartDirBuilder.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/builders/StartIniBuilder.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/config/CommandLineConfigSource.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSource.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSources.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/config/DirConfigSource.java | 11 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/config/JettyBaseConfigSource.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/config/JettyHomeConfigSource.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/BaseHomeFileInitializer.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/LocalFileInitializer.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/MavenLocalRepoFileInitializer.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/TestFileInitializer.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/UriFileInitializer.java | 2 jetty9-9.4.50/jetty-start/src/main/java/org/eclipse/jetty/start/package-info.java | 2 jetty9-9.4.50/jetty-start/src/main/resources/org/eclipse/jetty/start/build.properties | 4 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/BaseHomeTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/CommandLineBuilderTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/ConfigurationAssert.java | 272 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/FSTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/IncludeJettyDirTest.java | 5 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/JarVersionTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java | 132 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java | 54 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java | 7 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/PathFinderTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/PathMatchersAbsoluteTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/PathMatchersSearchRootTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyDump.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyPassingTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/PropsTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/StartMatchers.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/TestBadUseCases.java | 87 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/TestEnv.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/TestUseCases.java | 158 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/UtilsTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/VersionTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/config/ConfigSourcesTest.java | 44 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/fileinits/MavenLocalRepoFileInitializerTest.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/AbstractUseCase.java | 266 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/AgentPropertiesTest.java | 93 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/AlternatesTest.java | 452 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAddToStartTest.java | 90 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAddToStartdTest.java | 92 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAddUnknownTest.java | 56 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAlreadyEnabledTest.java | 90 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesTest.java | 75 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BasehomeWithfilesTest.java | 97 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BasicPropertiesTest.java | 108 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BasicTest.java | 300 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/DatabaseTest.java | 102 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/DynamicDependTest.java | 165 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EmptyAddToStartCreateStartdTest.java | 95 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EmptyAddToStartTest.java | 89 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EmptyCreateStartdTest.java | 92 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/Files0Test.java | 73 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/LoopTest.java | 173 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/OrderedTest.java | 432 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/ParameterizedTest.java | 311 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/TransientIniTemplateTest.java | 184 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/VersionedModulesTest.java | 95 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/util/CorrectMavenCentralRefs.java | 2 jetty9-9.4.50/jetty-start/src/test/java/org/eclipse/jetty/start/util/RebuildTestResources.java | 26 jetty9-9.4.50/jetty-start/src/test/resources/assert-home-with-jvm.txt | 24 jetty9-9.4.50/jetty-start/src/test/resources/assert-home-with-module.txt | 22 jetty9-9.4.50/jetty-start/src/test/resources/assert-home-with-spaces.txt | 15 jetty9-9.4.50/jetty-start/src/test/resources/assert-home.txt | 15 jetty9-9.4.50/jetty-start/src/test/resources/usecases/agent-properties.assert.txt | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/agent-properties.cmdline.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/agent-properties/modules/agent.mod | 6 jetty9-9.4.50/jetty-start/src/test/resources/usecases/agent-properties/start.ini | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.0.assert.txt | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.0.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.1.assert.txt | 15 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.1.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.2.assert.txt | 14 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.2.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.3.assert.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.3.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.4.assert.txt | 14 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.4.cmdline.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate.4.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate/modules/alternate.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate/modules/default.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate/modules/noDftOptionA.mod | 8 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate/modules/noDftOptionB.mod | 11 jetty9-9.4.50/jetty-start/src/test/resources/usecases/alternate/start.ini | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.addToStart.assert.txt | 18 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.addToStart.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.addToStartd.assert.txt | 19 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.addToStartd.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.addUnknown.assert.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.addUnknown.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.alreadyEnabled.assert.txt | 17 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.alreadyEnabled.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones.assert.txt | 11 jetty9-9.4.50/jetty-start/src/test/resources/usecases/barebones/start.ini | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basehome.withfiles.assert.txt | 15 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basehome.withfiles.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basehome/modules/withfiles.mod | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basehome/modules/withfiles/four/sub/dir/test.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basehome/modules/withfiles/four/test.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basehome/modules/withfiles/test.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basic-properties.assert.txt | 22 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basic-properties.cmdline.txt | 16 jetty9-9.4.50/jetty-start/src/test/resources/usecases/basic-properties/start.ini | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/database.assert.txt | 16 jetty9-9.4.50/jetty-start/src/test/resources/usecases/database/etc/db.xml | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/database/modules/db.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/database/start.ini | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop.0.assert.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop.0.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop.1.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/modules/branch.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/modules/dick.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/modules/dynamic/harry.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/modules/other.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/modules/root.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/modules/tom.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic-loop/start.ini | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic.0.assert.txt | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic.0.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic.1.assert.txt | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic.1.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic/modules/dynamic.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic/modules/impl/dynamic-1.7.0_31.mod | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic/modules/impl/dynamic-1.8.0_05.mod | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/dynamic/start.ini | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/empty.addToStart.assert.txt | 22 jetty9-9.4.50/jetty-start/src/test/resources/usecases/empty.addToStart.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/empty.addToStartCreateStartd.assert.txt | 26 jetty9-9.4.50/jetty-start/src/test/resources/usecases/empty.addToStartCreateStartd.prepare.txt | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/empty.createStartd.assert.txt | 24 jetty9-9.4.50/jetty-start/src/test/resources/usecases/empty.createStartd.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/files.0.assert.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/files.0.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/files/modules/demo.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop.assert.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/modules/branch.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/modules/dick.mod | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/modules/harry.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/modules/other.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/modules/root.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/modules/tom.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/loop/start.ini | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered-provided.0.assert.txt | 7 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered-provided.0.prepare.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered-provided/modules/abstractA.mod | 9 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered-provided/modules/abstractB.mod | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered-provided/modules/dynamic/implA.mod | 6 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered-provided/modules/dynamic/implB.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.0.assert.txt | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.0.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.1.assert.txt | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.1.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.2.assert.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.2.cmdline.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.default.assert.txt | 12 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered.default.cmdline.txt | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/alternateA.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/alternateB.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/convenience.mod | 4 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/dependent.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/original.mod | 4 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/replacement.mod | 7 jetty9-9.4.50/jetty-start/src/test/resources/usecases/ordered/modules/something-else.mod | 3 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized.addToStart.assert.txt | 20 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized.addToStart.prepare.txt | 6 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized.commands.assert.txt | 20 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized.commands.prepare.txt | 4 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized.update.assert.txt | 21 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized.update.prepare.txt | 11 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized/etc/commands.txt | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized/modules/parameterized.mod | 13 jetty9-9.4.50/jetty-start/src/test/resources/usecases/parameterized/start.d/tobeupdated.ini | 7 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithIniTemplate.assert.txt | 14 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithIniTemplate.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithIniTemplate/modules/direct.mod | 8 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithIniTemplate/modules/transient.mod | 5 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithIniTemplate/start.ini | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithoutIniTemplate.assert.txt | 15 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithoutIniTemplate.prepare.txt | 1 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithoutIniTemplate/modules/direct.mod | 8 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithoutIniTemplate/modules/transient.mod | 11 jetty9-9.4.50/jetty-start/src/test/resources/usecases/transientWithoutIniTemplate/start.ini | 2 jetty9-9.4.50/jetty-start/src/test/resources/usecases/versioned-modules.assert.txt | 13 jetty9-9.4.50/jetty-start/src/test/resources/usecases/versioned-modules/modules/new.mod | 7 jetty9-9.4.50/jetty-start/src/test/resources/usecases/versioned-modules/modules/old.mod | 4 jetty9-9.4.50/jetty-start/src/test/resources/usecases/versioned-modules/start.ini | 3 jetty9-9.4.50/jetty-unixsocket/pom.xml | 23 jetty9-9.4.50/jetty-unixsocket/src/main/assembly/config.xml | 4 jetty9-9.4.50/jetty-unixsocket/src/main/java/org/eclipse/jetty/unixsocket/UnixSocketConnector.java | 2 jetty9-9.4.50/jetty-unixsocket/src/main/java/org/eclipse/jetty/unixsocket/UnixSocketEndPoint.java | 2 jetty9-9.4.50/jetty-unixsocket/src/main/java/org/eclipse/jetty/unixsocket/client/HttpClientTransportOverUnixSockets.java | 2 jetty9-9.4.50/jetty-unixsocket/src/test/java/org/eclipse/jetty/unixsocket/JnrTest.java | 2 jetty9-9.4.50/jetty-unixsocket/src/test/java/org/eclipse/jetty/unixsocket/UnixSocketClient.java | 2 jetty9-9.4.50/jetty-unixsocket/src/test/java/org/eclipse/jetty/unixsocket/UnixSocketProxyServer.java | 2 jetty9-9.4.50/jetty-unixsocket/src/test/java/org/eclipse/jetty/unixsocket/UnixSocketServer.java | 2 jetty9-9.4.50/jetty-unixsocket/src/test/java/org/eclipse/jetty/unixsocket/UnixSocketTest.java | 2 jetty9-9.4.50/jetty-util-ajax/pom.xml | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/AsyncJSON.java | 39 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSON.java | 103 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONCollectionConvertor.java | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONDateConvertor.java | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONEnumConvertor.java | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONObjectConvertor.java | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONPojoConvertor.java | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorFactory.java | 2 jetty9-9.4.50/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/package-info.java | 2 jetty9-9.4.50/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/AsyncJSONTest.java | 49 jetty9-9.4.50/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONCollectionConvertorTest.java | 2 jetty9-9.4.50/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorFactoryTest.java | 2 jetty9-9.4.50/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorTest.java | 2 jetty9-9.4.50/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java | 2 jetty9-9.4.50/jetty-util/pom.xml | 6 jetty9-9.4.50/jetty-util/src/main/config/modules/log4j2-api.mod | 3 jetty9-9.4.50/jetty-util/src/main/config/modules/log4j2-impl.mod | 6 jetty9-9.4.50/jetty-util/src/main/config/modules/logback-impl.mod | 2 jetty9-9.4.50/jetty-util/src/main/config/modules/slf4j-api.mod | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/AbstractTrie.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ArrayTernaryTrie.java | 58 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ArrayTrie.java | 147 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ArrayUtil.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/AtomicBiInteger.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Atomics.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Attachable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Attributes.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/AttributesMap.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/B64Code.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/BlockingArrayQueue.java | 10 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/BufferUtil.java | 36 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ByteArrayISO8859Writer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ByteArrayOutputStream2.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Callback.java | 29 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ClassLoadingObjectInputStream.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ClassVisibilityChecker.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/CompletableCallback.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ConcurrentHashSet.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ConstantThrowable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/CountingCallback.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/DateCache.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/DecoratedObjectFactory.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Decorator.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Fields.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/FutureCallback.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/FuturePromise.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/HostMap.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/HostPort.java | 18 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/HttpCookieStore.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IO.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IPAddressMap.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IncludeExclude.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IncludeExcludeSet.java | 6 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/InetAddressSet.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IntrospectionUtil.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IteratingCallback.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/IteratingNestedCallback.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Jetty.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/LazyList.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/LeakDetector.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Loader.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MathUtils.java | 22 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MemoryUtils.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ModuleLocation.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MultiException.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MultiMap.java | 11 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartWriter.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/MultiReleaseJarFile.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/PathWatcher.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/PatternMatcher.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Pool.java | 585 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ProcessorUtils.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Promise.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/QuotedStringTokenizer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ReadLineInputStream.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/RegexSet.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Retainable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/SearchPattern.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/SharedBlockingCallback.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/SocketAddressResolver.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/TopologicalSort.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/TreeTrie.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Trie.java | 12 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java | 273 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Uptime.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/UrlEncoded.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8Appendable.java | 3 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8LineParser.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8StringBuffer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8StringBuilder.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/ManagedAttribute.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/ManagedObject.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/ManagedOperation.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/Name.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java | 6 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/AttributeContainerMap.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/Container.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/ContainerLifeCycle.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/Destroyable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/Dumpable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/DumpableCollection.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/FileDestroyable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/FileNoticeLifeCycleListener.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/Graceful.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/LifeCycle.java | 30 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/StopLifeCycle.java | 22 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/component/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/compression/CompressionPool.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/compression/DeflaterPool.java | 21 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/compression/InflaterPool.java | 21 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/AbstractLogger.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/JavaUtilLog.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/JettyAwareLogger.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/JettyLogHandler.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java | 19 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/Logger.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/LoggerLog.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/Slf4jLog.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/StacklessLogging.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/StdErrLog.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/log/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/AWTLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/AbstractLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/AppContextLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/DOMLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/DriverManagerLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/GCThreadLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/Java2DLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/LDAPLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/LoginConfigurationLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/SecurityProviderLeakPreventer.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/BadResource.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/EmptyResource.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java | 10 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarFileResource.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/JarResource.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java | 41 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java | 9 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceCollators.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceCollection.java | 5 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceFactory.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResource.java | 11 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/resource/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/CertificateUtils.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/CertificateValidator.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/Constraint.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/Credential.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/CredentialProvider.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/Password.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/security/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/AliasedX509ExtendedKeyManager.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/KeyStoreScanner.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SniX509ExtendedKeyManager.java | 8 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java | 172 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslSelectionDump.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/X509.java | 141 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/CounterStatistic.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/RateCounter.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/RateStatistic.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/SampleStatistic.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ExecutionStrategy.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ExecutorSizedThreadPool.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ExecutorThreadPool.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Invocable.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Locker.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/MonitoredQueuedThreadPool.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/PrivilegedThreadFactory.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java | 62 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java | 368 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ScheduledExecutorScheduler.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Scheduler.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/SerializedExecutor.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ShutdownThread.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Sweeper.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadClassLoaderScope.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadPool.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadPoolBudget.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TimerScheduler.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/package-info.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java | 4 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ExecuteProduceConsume.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceConsume.java | 2 jetty9-9.4.50/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ArrayUtilTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/AtomicBiIntegerTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/B64CodeTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/BlockingArrayQueueTest.java | 131 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/BufferUtilTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/CollectionAssert.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/FutureCallbackTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/HostPortTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/IPAddressMapTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/IncludeExcludeSetTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/IncludeExcludeTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/InetAddressSetTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/IntrospectionUtilTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/IteratingCallbackTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/JavaVersionTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/LazyListTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/LeakDetectorTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/LoaderTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/MultiExceptionTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/MultiMapTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/MultiPartInputStreamTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/MultiReleaseJarFileTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/PathWatcherDemo.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/PathWatcherTest.java | 4 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/PoolTest.java | 87 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ProcessorUtilsTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/QueueBenchmarkTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ReadLineInputStreamTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/RegexSetTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ScannerTest.java | 125 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/SearchPatternTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/SharedBlockingCallbackTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/TestIntrospectionUtil.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/TopologicalSortTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/TrieTest.java | 185 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/TypeUtilTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java | 49 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java | 50 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/URLEncodedTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/UptimeTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/UrlEncodedInvalidEncodingTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/UrlEncodedUtf8Test.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/Utf8AppendableTest.java | 31 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/Utf8LineParserTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/component/ContainerLifeCycleTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/component/DumpableTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/component/LifeCycleListenerNestedTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/component/LifeCycleListenerTest.java | 9 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/Blue.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/CapturingJULHandler.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/Green.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/JavaUtilLogTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/LogTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/NamedLogTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/Red.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/Slf4jHelper.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/StdErrCapture.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/log/StdErrLogTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ClassPathResourceTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java | 38 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/JarResourceTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/JrtResourceTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/PathResourceTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceAliasTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceCollectionTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java | 39 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/security/CredentialTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/security/PasswordTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java | 4 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/X509CertificateAdapter.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/X509Test.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/CounterStatisticTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/RateStatisticTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/SampleStatisticTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/AbstractThreadPoolTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/EatWhatYouKillTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ExecutorThreadPoolTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/LockerTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java | 57 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ReservedThreadExecutorTest.java | 44 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SchedulerTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SerializedExecutorTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SweeperTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ThreadClassLoaderScopeTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ThreadFactoryTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/strategy/ExecuteProduceConsumeTest.java | 2 jetty9-9.4.50/jetty-util/src/test/java/org/eclipse/jetty/util/thread/strategy/ExecutionStrategyTest.java | 2 jetty9-9.4.50/jetty-webapp/pom.xml | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/AbsoluteOrdering.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/AbstractConfiguration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/CachingWebAppClassLoader.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/ClasspathPattern.java | 8 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/CloneConfiguration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Configuration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/DecoratingListener.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/DefaultsDescriptor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Descriptor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/DescriptorProcessor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/DiscoveredAnnotation.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/FragmentConfiguration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/FragmentDescriptor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/IterativeDescriptorProcessor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/JarScanner.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/JettyWebXmlConfiguration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaData.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaDataComplete.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/MetaInfConfiguration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Ordering.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/Origin.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/OverrideDescriptor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/RelativeOrdering.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/StandardDescriptorProcessor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppClassLoader.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java | 21 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebDescriptor.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebInfConfiguration.java | 22 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebXmlConfiguration.java | 2 jetty9-9.4.50/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/package-info.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/acme/webapp/ClassInJarA.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ClasspathPatternTest.java | 13 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/ForcedServletTest.java | 263 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/HugeResourceTest.java | 83 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/MetaInfConfigurationTest.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/OrderingTest.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/TempDirTest.java | 387 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/URLStreamHandlerUtil.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderTest.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppClassLoaderUrlStreamTest.java | 2 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppContextTest.java | 67 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppDefaultServletTest.java | 142 jetty9-9.4.50/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebInfConfigurationTest.java | 2 jetty9-9.4.50/jetty-webapp/src/test/webapp-alt-jsp/WEB-INF/web.xml | 27 jetty9-9.4.50/jetty-webapp/src/test/webapp-alt-jsp/hello.jsp | 1 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/pom.xml | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/AbstractJsrRemote.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/BasicEndpointConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/ClientContainer.java | 8 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/Configurable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/ConfigurationException.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/DecoderFactory.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/EncoderFactory.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/InitException.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JettyClientContainerProvider.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrAsyncRemote.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrBasicRemote.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrExtension.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrExtensionConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrHandshakeResponse.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrPongMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSession.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSessionFactory.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSessionListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSessionTracker.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrUpgradeListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/MessageHandlerFactory.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/MessageHandlerWrapper.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/MessageType.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/AnnotatedEndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/AnnotatedEndpointScanner.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/IJsrMethod.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/IJsrParamId.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrEvents.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdBase.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdBinary.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdOnClose.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdOnError.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdOnMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdOnOpen.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdPong.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdText.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnCloseCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnErrorCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnMessageBinaryCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnMessageBinaryStreamCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnMessageCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnMessagePongCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnMessageTextCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnMessageTextStreamCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/OnOpenCallable.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/annotations/Param.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/client/AnnotatedClientEndpointConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/client/AnnotatedClientEndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/client/EmptyClientEndpointConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/client/EmptyConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/client/JsrClientEndpointImpl.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/client/SimpleEndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/AbstractDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/BooleanDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/ByteArrayDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/ByteBufferDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/ByteDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/CharacterDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/DoubleDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/FloatDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/InputStreamDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/IntegerDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/LongDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/PongMessageDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/PrimitiveDecoderMetadataSet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/ReaderDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/ShortDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/decoders/StringDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/AbstractEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/BooleanEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/ByteArrayEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/ByteBufferEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/ByteEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/CharacterEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/DefaultBinaryEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/DefaultBinaryStreamEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/DefaultTextEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/DefaultTextStreamEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/DoubleEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/EncodeFailedFuture.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/FloatEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/IntegerEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/LongEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/PrimitiveEncoderMetadataSet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/ShortEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/encoders/StringEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/endpoints/AbstractJsrEventDriver.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/endpoints/EndpointInstance.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/endpoints/JsrAnnotatedEventDriver.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/endpoints/JsrEndpointEventDriver.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/endpoints/JsrEndpointImpl.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/endpoints/JsrEventDriverFactory.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/BinaryPartialMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/BinaryPartialOnMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/BinaryWholeMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/SendHandlerWriteCallback.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextPartialOnMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/messages/TextWholeMessage.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/CoderMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/CoderMetadataSet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/DecoderMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/DecoderMetadataSet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/DuplicateCoderException.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/EncoderMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/EncoderMetadataSet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/EndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/metadata/MessageHandlerMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/utils/Primitives.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/examples/EchoEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/examples/OriginServerConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/examples/SecureClientContainerExample.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/examples/SecureWebSocketContainerExample.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/AnnotatedEchoClient.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/AnnotatedEchoTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/AnnotatedEndpointClient.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/AnnotatedEndpointConfigTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/AnnotatedEndpointConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/ConfiguratorTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderFactoryTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderReaderManySmallTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DecoderReaderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/DelayedStartClientTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/EchoCaptureHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/EchoHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/EncoderFactoryTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/EncoderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/EndpointEchoClient.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/EndpointEchoTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/JettyEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/JsrSessionTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/LargeMessageTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/MessageHandlerFactoryTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/MessageQueue.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/MessageReceivingTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/annotations/DateTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/annotations/JsrParamIdDecoderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/BadDualDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/DateDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/DateTimeDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/FloatDecoderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/IntegerDecoderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/LongDecoderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/PrimitiveDecoderMetadataSetTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/ShortDecoderTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/TimeDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/decoders/ValidDualDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/demo/ExampleClient.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/demo/ExampleSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/encoders/BadDualEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/encoders/DateEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/encoders/DateTimeEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/encoders/DualEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/encoders/TimeEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/encoders/ValidDualEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/ClientAnnotatedEndpointScannerGoodSignaturesTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/ClientAnnotatedEndpointScannerInvalidSignaturesTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/OnCloseTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/TrackingSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicBinaryMessageByteBufferSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicErrorSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicErrorSessionThrowableSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicErrorSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicErrorThrowableSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicErrorThrowableSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicInputStreamSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicInputStreamWithThrowableSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicOpenCloseSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicOpenCloseSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicOpenSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicOpenSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicPongMessageSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/BasicTextMessageStringSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidCloseIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidErrorErrorSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidErrorExceptionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidErrorIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidOpenCloseReasonSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidOpenIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/InvalidOpenSessionIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/close/CloseEndpointConfigSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/close/CloseReasonSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/close/CloseReasonSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/close/CloseSessionReasonSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/close/CloseSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/endpoints/samples/close/CloseSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/BaseMessageHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ByteArrayPartialHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ByteArrayWholeHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ByteBufferPartialHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ByteBufferWholeHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ComboMessageHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ExtendedMessageHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/InputStreamWholeHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/LongMessageHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/ReaderWholeHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/StringPartialHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/handlers/StringWholeHandler.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/metadata/DecoderMetadataSetTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/metadata/EncoderMetadataSetTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/misbehaving/AnnotatedRuntimeOnOpen.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/misbehaving/EndpointRuntimeOnOpen.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/misbehaving/MisbehavingClassTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/AbstractStringEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/DummyEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/EchoStringEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/ExtDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/Fruit.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/FruitBinaryEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/FruitDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/FruitTextEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/samples/IntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/utils/ReflectUtilsTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/utils/TypeTree.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/pom.xml | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/AnnotatedServerEndpointConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/AnnotatedServerEndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/BasicServerEndpointConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/ContainerDefaultConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/JsrCreator.java | 9 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/JsrHandshakeRequest.java | 8 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/JsrHandshakeResponse.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/JsrPathParamId.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/JsrServerEndpointImpl.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/JsrServerExtendsEndpointImpl.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/PathParamServerEndpointConfig.java | 8 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/ServerContainer.java | 47 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/ServerEndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/SimpleServerEndpointMetadata.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/server/deploy/WebSocketServerContainerInitializer.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/examples/GetHttpSessionConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/examples/GetHttpSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/examples/MyAuthedConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/examples/MyAuthedSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/examples/StreamingEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AddEndpointTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AltFilterTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/AnnotatedServerEndpointTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/BasicEndpointTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/BinaryStreamTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ConfiguratorTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/DelayedStartClientOnServerTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/EchoCase.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/EchoClientSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/EchoTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/EncoderLifeCycleTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ExtensionStackProcessingTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/IdleTimeoutTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/JavaxClientClassLoaderTest.java | 217 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/JettyEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/JettyServerEndpointConfiguratorTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/JsrBatchModeTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeAnnotatedTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeClientContainerInitAsServerListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeClientContainerServlet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeContainerTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeNestedClientContainerTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeOnOpenSessionConfiguredTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/LargeServerContainerAsClientContainerServlet.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/MemoryUsageTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/OnMessageReturnTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/OnPartialTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/PingPongTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ProgrammaticWebSocketUpgradeTest.java | 237 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/RestartContextTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ServerAnnotatedEndpointScannerGoodSignaturesTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/ServerAnnotatedEndpointScannerInvalidSignaturesTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/SessionAltConfig.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/SessionInfoEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/SessionInfoSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/SessionTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/SessionTrackingTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/StreamTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/TextStreamTest.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/TrackingSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/WSServer.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/WebAppTester.java | 261 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/browser/JsrBrowserConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/browser/JsrBrowserDebugTool.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/browser/JsrBrowserSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicBinaryMessageByteBufferSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicCloseReasonSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicCloseReasonSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicCloseSessionReasonSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicCloseSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicErrorSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicErrorSessionThrowableSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicErrorSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicErrorThrowableSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicErrorThrowableSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicOpenCloseSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicOpenCloseSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicOpenSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicOpenSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicPongMessageSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/BasicTextMessageStringSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidCloseIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidErrorErrorSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidErrorExceptionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidErrorIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidOpenCloseReasonSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidOpenIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/InvalidOpenSessionIntSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/StatelessTextMessageStringSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/DateDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/DateEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/DateTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/DateTimeDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/DateTimeEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/TimeDecoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/beans/TimeEncoder.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/binary/ByteBufferSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/BasicEchoEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/BasicEchoEndpointConfigContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/BasicEchoEndpointContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/BasicEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/BasicEchoSocketConfigContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/BasicEchoSocketContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/ConfiguredEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/EchoReturnEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/EchoSocketConfigurator.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/LargeEchoAnnotatedSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/LargeEchoConfiguredSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/LargeEchoContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/echo/LargeEchoDefaultSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/idletimeout/IdleTimeoutContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/idletimeout/OnOpenIdleTimeoutEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/idletimeout/OnOpenIdleTimeoutSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/partial/PartialTextSessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/partial/PartialTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/partial/PartialTrackingSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/pong/PongContextListener.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/pong/PongMessageEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/pong/PongSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/BooleanObjectTextParamSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/BooleanObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/BooleanTextParamSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/BooleanTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/ByteObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/ByteTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/CharTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/CharacterObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/DoubleObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/DoubleTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/FloatObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/FloatTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/IntParamTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/IntTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/IntegerObjectParamTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/IntegerObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/LongObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/LongTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/ShortObjectTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/primitives/ShortTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/streaming/InputStreamSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/streaming/ReaderParamSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/streaming/ReaderSocket.java | 2 jetty9-9.4.50/jetty-websocket/javax-websocket-server-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/server/samples/streaming/StringReturnReaderParamSocket.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/pom.xml | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/AnnoMaxMessageEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/CloseTrackingEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/ConcurrentConnectTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/ConnectMessageEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/EchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/ErrorCloseTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/EventSocket.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/GetAuthHeaderEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/InvalidUpgradeServlet.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/MaxOutgoingFramesTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/ParamsEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/PermessageDeflateBufferTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/SimpleStatusServlet.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/SingleOnMessageTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/SuspendResumeTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/UpgradeWithLeftOverHttpBytesTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketCompressionPoolTest.java | 114 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketNegotiationTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WebSocketStatsTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/WriteAfterStopTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/BadNetworkTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ClientCloseTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ClientConnectTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ClientOpenSessionTracker.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ClientSessionsTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ClientTimeoutTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ClientWriteThread.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/ConnectFutureTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/SlowClientTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/client/WebSocketClientTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/proxy/WebSocketProxy.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/proxy/WebSocketProxyTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/AbstractCloseEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/ContainerEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/FastCloseEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/FastFailEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/FrameAnnotationTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/FrameListenerTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/PartialListenerTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/ServerCloseCreator.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/ServerCloseTest.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/SlowServerEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/jetty-websocket-tests/src/test/java/org/eclipse/jetty/websocket/tests/server/SlowServerTest.java | 2 jetty9-9.4.50/jetty-websocket/pom.xml | 2 jetty9-9.4.50/jetty-websocket/websocket-api/pom.xml | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/BadPayloadException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/BatchMode.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/CloseException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/CloseStatus.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/InvalidWebSocketException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/MessageTooLargeException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/PolicyViolationException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/ProtocolException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/RemoteEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/Session.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/StatusCode.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/SuspendToken.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/UpgradeException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/UpgradeRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/UpgradeResponse.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketAdapter.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketBehavior.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketConnectionListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketConstants.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketFrameListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPartialListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPingPongListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketPolicy.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WebSocketTimeoutException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/WriteCallback.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketClose.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketConnect.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketError.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/OnWebSocketMessage.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/WebSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/annotations/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/Extension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/ExtensionConfig.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/ExtensionFactory.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/Frame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/IncomingFrames.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/OutgoingFrames.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/extensions/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/util/QuoteUtil.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/util/WSURI.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/main/java/org/eclipse/jetty/websocket/api/util/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/test/java/org/eclipse/jetty/websocket/api/extensions/ExtensionConfigTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/test/java/org/eclipse/jetty/websocket/api/util/QuoteUtilQuoteTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/test/java/org/eclipse/jetty/websocket/api/util/QuoteUtilTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-api/src/test/java/org/eclipse/jetty/websocket/api/util/WSURITest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/pom.xml | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/ClientUpgradeResponse.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/DefaultHttpClientProvider.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/HttpClientProvider.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/NoOpEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketClient.java | 11 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/WebSocketUpgradeRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/XmlBasedHttpClientProvider.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/ConnectionManager.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/UpgradeListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/WebSocketClientConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/io/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/masks/FixedMasker.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/masks/Masker.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/masks/RandomMasker.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/masks/ZeroMasker.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/masks/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/main/java/org/eclipse/jetty/websocket/client/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/examples/SimpleEchoClient.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/examples/SimpleEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/examples/SimpleSecureEchoClient.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/ConnectionManagerTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/CookieTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/HttpClientInitTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/JettyTrackingSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/MaxMessageSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/TomcatServerQuirksTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/WebSocketClientBadUriTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/WebSocketClientInitTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-client/src/test/java/org/eclipse/jetty/websocket/client/examples/TestClient.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/pom.xml | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/AcceptHash.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/BlockingWriteCallback.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/CloseInfo.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/Generator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/LogicalConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/OpCode.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/Parser.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/RemoteEndpointFactory.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/SessionFactory.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/SessionTracker.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/UpgradeRequestAdapter.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/UpgradeResponseAdapter.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketRemoteEndpoint.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSession.java | 10 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSessionFactory.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/WebSocketSessionListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/AbstractEventDriver.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/EventDriver.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/EventDriverFactory.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/EventDriverImpl.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/JettyAnnotatedEventDriver.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/JettyAnnotatedImpl.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/JettyAnnotatedMetadata.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/JettyAnnotatedScanner.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/JettyListenerEventDriver.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/JettyListenerImpl.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/ParamList.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/annotated/AbstractMethodAnnotationScanner.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/annotated/CallableMethod.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/annotated/EventMethod.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/annotated/EventMethods.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/annotated/InvalidSignatureException.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/annotated/OptionalSessionCallableMethod.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/events/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/AbstractExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStack.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/FrameCaptureExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/WebSocketExtensionFactory.java | 36 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/ByteAccumulator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/DeflateFrameExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/XWebkitDeflateFrameExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/FragmentExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/fragment/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/identity/IdentityExtension.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/identity/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/BinaryFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/CloseFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/ContinuationFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/ControlFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/DataFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/PingFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/PongFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/ReadOnlyDelegatedFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/frames/TextFrame.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/AbstractWebSocketConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/ConnectionState.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/DisconnectCallback.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/FrameFlusher.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/FramePipes.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/FutureWriteCallback.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/ReadState.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/http/HttpResponseHeaderParseListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/http/HttpResponseHeaderParser.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/payload/DeMaskProcessor.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/payload/PayloadProcessor.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/io/payload/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageAppender.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageInputStream.java | 33 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageOutputStream.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageReader.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/MessageWriter.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/NullMessage.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/SimpleBinaryMessage.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/SimpleTextMessage.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/Utf8CharBuffer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/message/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/scopes/DelegatedContainerScope.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/scopes/SimpleContainerScope.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/scopes/WebSocketContainerScope.java | 16 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/scopes/WebSocketSessionScope.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/util/ReflectUtils.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/util/TextUtil.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/util/Utf8PartialBuilder.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AdapterConnectCloseSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AnnotatedBinaryArraySocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AnnotatedBinaryStreamSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AnnotatedFramesSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AnnotatedStreamingSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AnnotatedTextSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/AnnotatedTextStreamSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/ListenerBasicSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/ListenerFrameSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/ListenerPartialSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/ListenerPingPongSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/echo/AdapterEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/echo/AnnotatedEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/examples/echo/ListenerEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/AcceptHashTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/CloseInfoTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ClosePayloadParserTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/GeneratorParserRoundtripTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/GeneratorTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ParserTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/PingPayloadParserTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/RFC6455ExamplesGeneratorTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/RFC6455ExamplesParserTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/SaneFrameOrderingAssertion.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/TextPayloadParserTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/UpgradeResponseAdapterTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/WebSocketFrameTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/WebSocketRemoteEndpointTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ab/TestABCase11.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ab/TestABCase12.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ab/TestABCase2.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ab/TestABCase3.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ab/TestABCase4.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/ab/TestABCase73.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/BadBinarySignatureSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/BadDuplicateBinarySocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/BadDuplicateFrameSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/BadTextSignatureSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/FrameSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/MyEchoBinarySocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/MyEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/MyStatelessEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/NoopSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/annotations/NotASocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/events/EventCapture.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/events/EventDriverFactoryTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/events/EventDriverTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/events/JettyAnnotatedScannerTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/AbstractExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/DummyIncomingFrames.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/DummyOutgoingFrames.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/ExtensionStackTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/ExtensionTool.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/FragmentExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/IdentityExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/ByteAccumulatorTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/CapturedHexPayloads.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/DeflateFrameExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/CloseableLocalWebSocketSession.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/ConnectionStateTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/FrameFlusherTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/LocalWebSocketConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/LocalWebSocketSession.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/MockEndPoint.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/ReadStateTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/http/HttpResponseHeaderParserTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/http/HttpResponseParseCapture.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/io/payload/DeMaskProcessorTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/DummySocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/EmptySession.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/MessageDebug.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/MessageInputStreamTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/MessageOutputStreamTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/MessageWriterTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/TrackingInputStreamSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/TrackingSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/message/Utf8CharBufferTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/BlockheadClient.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/BlockheadClientConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/BlockheadClientRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/BlockheadConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/BlockheadServer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/BlockheadServerConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/ByteBufferAssert.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/DummyConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/Fuzzed.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/Fuzzer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/HttpResponse.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/IBlockheadClient.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/IncomingFramesCapture.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/MoreMatchers.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/OutgoingFramesCapture.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/OutgoingNetworkBytesCapture.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/RawFrameBuilder.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/Timeouts.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/UnitGenerator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/UnitParser.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/test/WriteCallbackDelegate.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/Hex.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/MaskedByteBuffer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/ReflectUtilsTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/Sha1Sum.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/StackUtil.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/TextUtilTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-common/src/test/java/org/eclipse/jetty/websocket/common/util/Utf8PartialBuilderTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/pom.xml | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/HandshakeRFC6455.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/MappedWebSocketCreator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/NativeWebSocketConfiguration.java | 21 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/NativeWebSocketServletContainerInitializer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/ServletWebSocketRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/ServletWebSocketResponse.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketHandler.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketHandshake.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketServerConnection.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketServerFactory.java | 67 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilter.java | 86 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeHandlerWrapper.java | 6 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/pathmap/PathSpec.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/pathmap/RegexPathSpec.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/main/java/org/eclipse/jetty/websocket/server/pathmap/ServletPathSpec.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/AnnotatedMaxMessageSizeTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/BatchModeTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ChromeTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/DecoratorsLegacyTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/DecoratorsTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/FirefoxTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/FragmentExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/IdentityExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/IdleTimeoutTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/InfoContextAltAttributeListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/InfoContextAttributeListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/InfoContextListener.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/InfoServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/InfoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/PerMessageDeflateExtensionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/RedirectWebSocketClientTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/RequestHeadersTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/SimpleServletServer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/SubProtocolTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/TooFastClientTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WSServer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketInvalidVersionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketOverSSLTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketProtocolTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketServerFactoryTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketServerSessionTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketServletRFCTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/WebSocketUpgradeFilterTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/ABServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/ABSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/AbstractABCase.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase1.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase2.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase3.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase4.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase5.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase6.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase6BadUTF.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase6GoodUTF.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase7.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase7BadStatusCodes.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase7GoodStatusCodes.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/ab/TestABCase9.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/browser/BrowserDebugTool.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/browser/BrowserSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/BasicEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/MyCustomCreationServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/MyEchoServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/MyEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/BigEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/EchoBroadcastPingSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/EchoBroadcastSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/EchoCreator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/EchoFragmentSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/ExampleEchoServer.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/examples/echo/LogSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/CaptureSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/EchoServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/EchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/RFCServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/RFCSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/SafariD00.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/SessionServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/SessionSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/helper/WebSocketCaptureServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/misbehaving/AnnotatedRuntimeOnConnectSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/misbehaving/BadSocketsServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/misbehaving/ListenerRuntimeOnConnectSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-server/src/test/java/org/eclipse/jetty/websocket/server/misbehaving/MisbehavingClassTest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/pom.xml | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/ServletUpgradeRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/ServletUpgradeResponse.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/UpgradeHttpServletRequest.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/WebSocketCreator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/WebSocketServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/WebSocketServletFactory.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/main/java/org/eclipse/jetty/websocket/servlet/package-info.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyAdvancedEchoCreator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyAdvancedEchoServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyAuthedCreator.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyAuthedServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyBinaryEchoSocket.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyEchoServlet.java | 2 jetty9-9.4.50/jetty-websocket/websocket-servlet/src/test/java/examples/MyEchoSocket.java | 2 jetty9-9.4.50/jetty-xml/pom.xml | 2 jetty9-9.4.50/jetty-xml/src/main/java/org/eclipse/jetty/xml/ConfigurationProcessor.java | 2 jetty9-9.4.50/jetty-xml/src/main/java/org/eclipse/jetty/xml/ConfigurationProcessorFactory.java | 2 jetty9-9.4.50/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlAppendable.java | 2 jetty9-9.4.50/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java | 2 jetty9-9.4.50/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlParser.java | 2 jetty9-9.4.50/jetty-xml/src/main/java/org/eclipse/jetty/xml/package-info.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/AnnotatedTestConfiguration.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/ConstructorArgTestClass.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/DefaultTestConfiguration.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/TestConfiguration.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlAppendableTest.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java | 2 jetty9-9.4.50/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlParserTest.java | 2 jetty9-9.4.50/pom.xml | 882 - jetty9-9.4.50/scripts/release-jetty.sh | 3 jetty9-9.4.50/tests/pom.xml | 36 jetty9-9.4.50/tests/test-continuation/pom.xml | 14 jetty9-9.4.50/tests/test-continuation/src/test/java/org/eclipse/jetty/continuation/ContinuationsTest.java | 2 jetty9-9.4.50/tests/test-distribution/pom.xml | 88 jetty9-9.4.50/tests/test-distribution/src/main/java/org/eclipse/jetty/tests/distribution/DistributionTester.java | 24 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/AbstractDistributionTest.java | 2 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/BadAppTests.java | 2 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/CDITests.java | 7 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/DemoBaseTests.java | 4 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/DistributionTests.java | 4 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/DynamicListenerTests.java | 2 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/HazelcastSessionDistributionTests.java | 263 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/InfinispanSessionDistributionTests.java | 229 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/OsgiAppTests.java | 2 jetty9-9.4.50/tests/test-distribution/src/test/java/org/eclipse/jetty/tests/distribution/StatsTests.java | 2 jetty9-9.4.50/tests/test-distribution/src/test/resources/config.yaml | 4 jetty9-9.4.50/tests/test-distribution/src/test/resources/hazelcast-client.xml | 20 jetty9-9.4.50/tests/test-distribution/src/test/resources/hazelcast-jetty.xml | 50 jetty9-9.4.50/tests/test-distribution/src/test/resources/hazelcast-server.xml | 52 jetty9-9.4.50/tests/test-distribution/src/test/resources/jetty-logging.properties | 2 jetty9-9.4.50/tests/test-http-client-transport/pom.xml | 14 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/AbstractTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/AsyncIOServletTest.java | 21 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/AsyncRequestContentTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/BlockedIOTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/ConnectionStatisticsTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/EmptyServerHandler.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpChannelAssociationTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientConnectTimeoutTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientContinueTest.java | 82 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientDemandTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientIdleTimeoutTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientLoadTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientTimeoutTest.java | 84 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpTrailersTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/RoundRobinConnectionPoolTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/ServerTimeoutsTest.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/Transport.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/TransportProvider.java | 2 jetty9-9.4.50/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/TransportScenario.java | 9 jetty9-9.4.50/tests/test-integration/pom.xml | 4 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerSymlinkTest.java | 227 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/AllowedResourceAliasCheckerTest.java | 155 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/AnnotatedAsyncListenerTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/CustomRequestLogTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/DefaultHandlerTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorInitializer.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/DeploymentErrorTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/DigestPostTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/FailedSelectorTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/GzipWithSendErrorTest.java | 8 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/HttpInputIntegrationTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/HttpInputInterceptorTest.java | 463 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/KeyStoreScannerTest.java | 37 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/RecoverFailedSelectorTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/jsp/FakeJspServlet.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/jsp/JspAndDefaultWithAliasesTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/jsp/JspAndDefaultWithoutAliasesTest.java | 53 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/rfcs/RFC2616BaseTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/rfcs/RFC2616NIOHttpTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/rfcs/RFC2616NIOHttpsTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/EchoHandler.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/JettyDistro.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/StringUtil.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/TestableJettyServer.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/rawhttp/HttpRequestTesterTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/rawhttp/HttpResponseTesterTest.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/rawhttp/HttpSocket.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/rawhttp/HttpSocketImpl.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/rawhttp/HttpTesting.java | 2 jetty9-9.4.50/tests/test-integration/src/test/java/org/eclipse/jetty/test/support/rawhttp/HttpsSocketImpl.java | 2 jetty9-9.4.50/tests/test-integration/src/test/resources/file | 1 jetty9-9.4.50/tests/test-integration/src/test/resources/sibling/file | 1 jetty9-9.4.50/tests/test-integration/src/test/resources/webroot/WEB-INF/web.xml | 1 jetty9-9.4.50/tests/test-integration/src/test/resources/webroot/documents/file | 1 jetty9-9.4.50/tests/test-integration/src/test/resources/webroot/file | 1 jetty9-9.4.50/tests/test-integration/src/test/resources/webroot/index.html | 4 jetty9-9.4.50/tests/test-jmx/jmx-webapp-it/pom.xml | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp-it/src/test/java/org/eclipse/jetty/test/jmx/JmxIT.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/pom.xml | 12 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/CommonComponent.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/Echoer.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/MyContainerInitializer.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/PingServlet.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/Pinger.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/jmx/EchoerMBean.java | 2 jetty9-9.4.50/tests/test-jmx/jmx-webapp/src/main/java/org/eclipse/jetty/test/jmx/jmx/PingerMBean.java | 2 jetty9-9.4.50/tests/test-jmx/pom.xml | 2 jetty9-9.4.50/tests/test-loginservice/pom.xml | 3 jetty9-9.4.50/tests/test-loginservice/src/test/java/org/eclipse/jetty/DataSourceLoginServiceTest.java | 3 jetty9-9.4.50/tests/test-loginservice/src/test/java/org/eclipse/jetty/DatabaseLoginServiceTestServer.java | 6 jetty9-9.4.50/tests/test-loginservice/src/test/java/org/eclipse/jetty/JdbcLoginServiceTest.java | 2 jetty9-9.4.50/tests/test-quickstart/pom.xml | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/AttributeNormalizerTest.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/AttributeNormalizerToCanonicalUriTest.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/EnvUtils.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/PreconfigureJNDIWar.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/PreconfigureSpecWar.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/PreconfigureStandardTestWar.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartJNDIWar.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartSpecWar.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartStandardTestWar.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/QuickStartTest.java | 2 jetty9-9.4.50/tests/test-quickstart/src/test/java/org/eclipse/jetty/quickstart/Quickstart.java | 2 jetty9-9.4.50/tests/test-sessions/pom.xml | 2 jetty9-9.4.50/tests/test-sessions/test-file-sessions/pom.xml | 14 jetty9-9.4.50/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/FileSessionDataStoreTest.java | 7 jetty9-9.4.50/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/FileTestHelper.java | 4 jetty9-9.4.50/tests/test-sessions/test-file-sessions/src/test/java/org/eclipse/jetty/server/session/TestFileSessions.java | 2 jetty9-9.4.50/tests/test-sessions/test-gcloud-sessions/pom.xml | 15 jetty9-9.4.50/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/ClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreTest.java | 7 jetty9-9.4.50/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/GCloudSessionTestSupport.java | 2 jetty9-9.4.50/tests/test-sessions/test-gcloud-sessions/src/test/java/org/eclipse/jetty/gcloud/session/InvalidationSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/pom.xml | 11 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/ClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/ClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/HazelcastClusteredInvalidationSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/HazelcastSessionDataStoreTest.java | 6 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/HazelcastTestHelper.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/client/ClientOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/client/ClientSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-hazelcast-sessions/src/test/java/org/eclipse/jetty/hazelcast/session/client/HazelcastSessionDataStoreTest.java | 6 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/pom.xml | 55 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSerializedSessionScavengingTest.java | 3 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionScavengingTest.java | 3 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanFileSessionDataStoreTest.java | 21 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanSessionDataStoreTest.java | 41 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/InfinispanTestSupport.java | 43 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/SerializedInfinispanSessionDataStoreTest.java | 44 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClusteredInvalidationSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanSessionDataStoreTest.java | 40 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/java/org/eclipse/jetty/server/session/remote/RemoteInfinispanTestSupport.java | 64 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/resources/config.yaml | 4 jetty9-9.4.50/tests/test-sessions/test-infinispan-sessions/src/test/resources/simplelogger.properties | 3 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/pom.xml | 10 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredInvalidationSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionMigrationTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/JDBCSessionDataStoreTest.java | 6 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/JdbcTestHelper.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/ReloadedSessionMissingClassTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/SessionTableSchemaTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-jdbc-sessions/src/test/java/org/eclipse/jetty/server/session/WebAppObjectInSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-memcached-sessions/pom.xml | 14 jetty9-9.4.50/tests/test-sessions/test-memcached-sessions/src/test/java/org/eclipse/jetty/memcached/sessions/CachingSessionDataStoreTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-memcached-sessions/src/test/java/org/eclipse/jetty/memcached/sessions/MemcachedTestHelper.java | 4 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/pom.xml | 17 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/AttributeNameTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/ClusteredInvalidateSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/ClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/ClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/MongoSessionDataStoreTest.java | 6 jetty9-9.4.50/tests/test-sessions/test-mongodb-sessions/src/test/java/org/eclipse/jetty/nosql/mongodb/MongoTestHelper.java | 22 jetty9-9.4.50/tests/test-sessions/test-sessions-common/pom.xml | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredInvalidationSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredOrphanedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractSessionDataStoreTest.java | 110 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractTestBase.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/AbstractWebAppObjectInSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/Foo.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/FooInvocationHandler.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestFoo.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpChannelCompleteListener.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListener.java | 26 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListenerWithWebappClasses.java | 8 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestServer.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestSessionDataStore.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestSessionDataStoreFactory.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestSessionHandler.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/WebAppObjectInSessionServlet.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/resources/Foo.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/resources/Proxyable.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/resources/ProxyableFactory.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/main/resources/ProxyableInvocationHandler.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/AbstractSessionCacheTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/AsyncTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/ClientCrossContextSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/ConcurrencyTest.java | 225 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/CreationTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DefaultSessionCacheTest.java | 47 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DeleteUnloadableSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DirtyAttributeTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/DuplicateCookieTest.java | 55 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/IdleSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/ImmortalSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/ModifyMaxInactiveIntervalTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/NonClusteredSessionScavengingTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/NullSessionCacheTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/RedirectSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/ReentrantRequestSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/RemoveSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/RequestDispatchedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/RequestScopedSessionSaveTest.java | 214 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SameContextForwardedSessionTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SameNodeLoadTest.java | 222 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SaveOptimizeTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionEvictionFailureTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionInvalidateCreateScavengeTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionInvalidationTest.java | 2 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionListenerTest.java | 97 jetty9-9.4.50/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionRenewTest.java | 29 jetty9-9.4.50/tests/test-webapps/pom.xml | 11 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/FriendlyGreetings.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/Greetings.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/GreetingsServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/InfoServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ManifestServerID.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/MyContextListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/OldGreetings.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ServerID.java | 2 jetty9-9.4.50/tests/test-webapps/test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ServerIDFilter.java | 2 jetty9-9.4.50/tests/test-webapps/test-felix-webapp/pom.xml | 4 jetty9-9.4.50/tests/test-webapps/test-felix-webapp/src/main/java/org/eclipse/jetty/demo/AppListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-felix-webapp/src/main/java/org/eclipse/jetty/demo/InfoServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-http2-webapp/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-http2-webapp/src/main/java/org/eclipse/jetty/test/webapp/HTTP1Servlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-http2-webapp/src/main/java/org/eclipse/jetty/test/webapp/HTTP2Servlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-http2-webapp/src/test/java/org/eclipse/jetty/test/webapp/HTTP2FromWebAppIT.java | 2 jetty9-9.4.50/tests/test-webapps/test-jaas-webapp/pom.xml | 10 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/pom.xml | 12 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/AddListServletRequestListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/ChatServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/CookieDump.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/Counter.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/Date2Tag.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/DateTag.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/DispatchServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/Dump.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/HelloWorld.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/JavaxWebSocketChat.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/LoginServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/RegTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/RewriteServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/SecureModeServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/SessionDump.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/TagListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/TestFilter.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/TestListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/TestServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/main/java/com/acme/WebSocketChatServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/ChatServletTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/DispatchServletTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-jetty-webapp/src/test/java/org/eclipse/jetty/TestServer.java | 2 jetty9-9.4.50/tests/test-webapps/test-jndi-webapp/pom.xml | 10 jetty9-9.4.50/tests/test-webapps/test-jndi-webapp/src/main/java/com/acme/JNDITest.java | 2 jetty9-9.4.50/tests/test-webapps/test-mock-resources/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-mock-resources/src/main/java/com/acme/MockDataSource.java | 2 jetty9-9.4.50/tests/test-webapps/test-mock-resources/src/main/java/com/acme/MockTransport.java | 2 jetty9-9.4.50/tests/test-webapps/test-mock-resources/src/main/java/com/acme/MockUserTransaction.java | 2 jetty9-9.4.50/tests/test-webapps/test-owb-cdi-webapp/pom.xml | 4 jetty9-9.4.50/tests/test-webapps/test-proxy-webapp/pom.xml | 12 jetty9-9.4.50/tests/test-webapps/test-proxy-webapp/src/test/java/org/eclipse/jetty/ProxyWebAppTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/pom.xml | 14 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-container-initializer/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/Foo.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-container-initializer/src/main/java/com/acme/initializer/FooInitializer.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/pom.xml | 10 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotatedListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AnnotationTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/AsyncListenerServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/Bar.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/ClassLoaderServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/MultiPartTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/RoleAnnotationTest.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/SecuredServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-spec-webapp/src/main/java/com/acme/test/TestListener.java | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-web-fragment/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-servlet-spec/test-web-fragment/src/main/java/com/acme/fragment/FragmentServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-simple-session-webapp/pom.xml | 24 jetty9-9.4.50/tests/test-webapps/test-simple-session-webapp/src/main/java/org/eclipse/jetty/test/session/Chocolate.java | 35 jetty9-9.4.50/tests/test-webapps/test-simple-session-webapp/src/main/java/org/eclipse/jetty/test/session/SessionTest.java | 49 jetty9-9.4.50/tests/test-webapps/test-simple-session-webapp/src/main/webapp/WEB-INF/web.xml | 21 jetty9-9.4.50/tests/test-webapps/test-simple-webapp/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-simple-webapp/src/main/webapp/WEB-INF/web.xml | 1 jetty9-9.4.50/tests/test-webapps/test-webapp-rfc2616/pom.xml | 10 jetty9-9.4.50/tests/test-webapps/test-webapp-rfc2616/src/main/java/org/eclipse/jetty/tests/webapp/HttpMethodsServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-websocket-client-provided-webapp/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-websocket-client-provided-webapp/src/main/java/org/eclipse/jetty/tests/webapp/websocket/EchoEndpoint.java | 2 jetty9-9.4.50/tests/test-webapps/test-websocket-client-provided-webapp/src/main/java/org/eclipse/jetty/tests/webapp/websocket/WebSocketClientServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-websocket-client-webapp/pom.xml | 2 jetty9-9.4.50/tests/test-webapps/test-websocket-client-webapp/src/main/java/org/eclipse/jetty/tests/webapp/websocket/EchoEndpoint.java | 2 jetty9-9.4.50/tests/test-webapps/test-websocket-client-webapp/src/main/java/org/eclipse/jetty/tests/webapp/websocket/WebSocketClientServlet.java | 2 jetty9-9.4.50/tests/test-webapps/test-weld-cdi-webapp/pom.xml | 2 3391 files changed, 36925 insertions(+), 14088 deletions(-) diff -Nru jetty9-9.4.39/.github/ISSUE_TEMPLATE/issue-template.md jetty9-9.4.50/.github/ISSUE_TEMPLATE/issue-template.md --- jetty9-9.4.39/.github/ISSUE_TEMPLATE/issue-template.md 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/.github/ISSUE_TEMPLATE/issue-template.md 2022-11-07 20:40:40.000000000 +0000 @@ -8,7 +8,7 @@ **Jetty version** -**Java version** +**Java version/vendor** `(use: java -version)` **OS type/version** diff -Nru jetty9-9.4.39/.github/dependabot.yml jetty9-9.4.50/.github/dependabot.yml --- jetty9-9.4.39/.github/dependabot.yml 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/.github/dependabot.yml 2022-11-07 20:40:40.000000000 +0000 @@ -8,6 +8,10 @@ target-branch: "jetty-9.4.x" # Encourage more pull requests from oldest branch open-pull-requests-limit: 20 + ignore: + - dependency-name: org.infinispan:* + versions: + - ">= 12" - package-ecosystem: "github-actions" directory: "/" @@ -20,6 +24,10 @@ schedule: interval: "weekly" target-branch: "jetty-10.0.x" + ignore: + - dependency-name: org.infinispan:* + versions: + - ">= 12" - package-ecosystem: "github-actions" directory: "/" @@ -32,6 +40,10 @@ schedule: interval: "weekly" target-branch: "jetty-11.0.x" + ignore: + - dependency-name: org.infinispan:* + versions: + - ">= 12" - package-ecosystem: "github-actions" directory: "/" diff -Nru jetty9-9.4.39/Jenkinsfile jetty9-9.4.50/Jenkinsfile --- jetty9-9.4.39/Jenkinsfile 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/Jenkinsfile 2022-11-07 20:40:40.000000000 +0000 @@ -3,15 +3,19 @@ pipeline { agent any // save some io during the build - options { durabilityHint('PERFORMANCE_OPTIMIZED') } + options { + skipDefaultCheckout() + durabilityHint('PERFORMANCE_OPTIMIZED') + buildDiscarder logRotator( numToKeepStr: '60' ) + } stages { stage("Parallel Stage") { parallel { stage("Build / Test - JDK8") { agent { node { label 'linux' } } steps { - container('jetty-build') { timeout( time: 240, unit: 'MINUTES' ) { + checkout scm mavenBuild( "jdk8", "clean install", "maven3") // Collect up the jacoco execution results (only on main build) jacoco inclusionPattern: '**/org/eclipse/jetty/**/*.class', @@ -33,92 +37,60 @@ sourcePattern: '**/src/main/java' recordIssues id: "jdk8", name: "Static Analysis jdk8", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser()] } - } } } + /* stage("Build / Test - JDK11") { agent { node { label 'linux' } } steps { - container( 'jetty-build' ) { timeout( time: 240, unit: 'MINUTES' ) { + checkout scm mavenBuild( "jdk11", "clean install -Djacoco.skip=true -Perrorprone", "maven3") recordIssues id: "jdk11", name: "Static Analysis jdk11", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser(), errorProne()] } - } } } - stage("Build / Test - JDK15") { + stage("Build / Test - JDK17") { agent { node { label 'linux' } } steps { - container( 'jetty-build' ) { timeout( time: 240, unit: 'MINUTES' ) { - mavenBuild( "jdk15", "clean install -Djacoco.skip=true", "maven3") - recordIssues id: "jdk15", name: "Static Analysis jdk15", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser()] + checkout scm + mavenBuild( "jdk17", "clean install -Djacoco.skip=true", "maven3") + recordIssues id: "jdk17", name: "Static Analysis jdk17", aggregatingResults: true, enabledForFailure: true, tools: [mavenConsole(), java(), checkStyle(), spotBugs(), pmdParser()] } - } } } + */ stage("Build Javadoc") { agent { node { label 'linux' } } steps { - container( 'jetty-build' ) { timeout( time: 120, unit: 'MINUTES' ) { + checkout scm mavenBuild( "jdk11", "install javadoc:javadoc javadoc:aggregate-jar -DskipTests -Dpmd.skip=true -Dcheckstyle.skip=true", "maven3") recordIssues id: "javadoc", enabledForFailure: true, tools: [javaDoc()] } - } } } + /* stage("Build Compact3") { agent { node { label 'linux' } } steps { - container( 'jetty-build' ) { timeout( time: 120, unit: 'MINUTES' ) { + checkout scm mavenBuild( "jdk8", "-Pcompact3 clean install -DskipTests", "maven3") } - } } } + */ } } } - post { - failure { - slackNotif() - } - unstable { - slackNotif() - } - fixed { - slackNotif() - } - } -} - -def slackNotif() { - script { - try - { - if ( env.BRANCH_NAME == 'jetty-10.0.x' || env.BRANCH_NAME == 'jetty-9.4.x' ) - { - //BUILD_USER = currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId() - // by ${BUILD_USER} - COLOR_MAP = ['SUCCESS': 'good', 'FAILURE': 'danger', 'UNSTABLE': 'danger', 'ABORTED': 'danger'] - slackSend channel: '#jenkins', - color: COLOR_MAP[currentBuild.currentResult], - message: "*${currentBuild.currentResult}:* Job ${env.JOB_NAME} build ${env.BUILD_NUMBER} - ${env.BUILD_URL}" - } - } catch (Exception e) { - e.printStackTrace() - echo "skip failure slack notification: " + e.getMessage() - } - } } /** @@ -134,11 +106,11 @@ script { try { withEnv(["JAVA_HOME=${ tool "$jdk" }", - "PATH+MAVEN=${env.JAVA_HOME}/bin:${tool "$mvnName"}/bin", + "PATH+MAVEN=${ tool "$jdk" }/bin:${tool "$mvnName"}/bin", "MAVEN_OPTS=-Xms2g -Xmx4g -Djava.awt.headless=true"]) { configFileProvider( [configFile(fileId: 'oss-settings.xml', variable: 'GLOBAL_MVN_SETTINGS')]) { - sh "mvn --no-transfer-progress -s $GLOBAL_MVN_SETTINGS -Dmaven.repo.local=.repository -Pci -V -B -e -Djetty.testtracker.log=true $cmdline -Dunix.socket.tmp=/tmp/unixsocket" + sh "mvn --no-transfer-progress -s $GLOBAL_MVN_SETTINGS -Dmaven.repo.local=.repository -Pci -DexcludedGroups=\"external, large-disk-resource, stress, slow\" -V -B -e -Djetty.testtracker.log=true $cmdline -Dunix.socket.tmp=/tmp/unixsocket" } } } diff -Nru jetty9-9.4.39/VERSION.txt jetty9-9.4.50/VERSION.txt --- jetty9-9.4.39/VERSION.txt 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/VERSION.txt 2022-11-07 20:40:40.000000000 +0000 @@ -1,15 +1,152 @@ +jetty-9.4.50.v20221107 - 07 November 2022 + + 8774 Added SizeLimitHandler + +jetty-9.4.49.v20220914 - 14 September 2022 + + 8414 BlockingArrayQueue drops all contents on drain + + 8493 Review HTTP client feature `setRemoveIdleDestinations` + + 8578 `getRequestURL` can append "null" if `getRequestURI` is unspecified in + an authority-form request-target + +jetty-9.4.48.v20220622 - 21 June 2022 + + 8184 All suffix globs except first fail to match if path has . character in + prefix + +jetty-9.4.47.v20220610 - 10 June 2022 + + 4717 High CPU spikes with jetty winstone threads + + 7748 Allow overriding of url-pattern mapping in ServletContextHandler to + allow for regex or uri-template matching + + 7801 Session cookie can be set twice after session id changed + + 7855 Remove accidentally included package-info.class in all packages + + 7858 GZipHandler does not play nice with other handlers in HandlerCollection + + 7863 Default servlet drops first accept-encoding header if there is more + than one. + + 7918 PathMappings.asPathSpec does not allow root ServletPathSpec + + 7935 Review HTTP/2 error handling (Resolves CVE-2022-2048) + + 8014 Review HttpRequest URI construction (Resolves CVE-2022-2047) + + 8067 Wall time usage in DoSFilter RateTracker results in false positive + alert + + 8088 Add option to configure exitVm on ShutdownMonitor from System + properties + +jetty-9.4.46.v20220331 - 31 March 2022 + + 5965 Option --write-module-graph produces wrong .dot file + + 6756 Deprecate `/jetty-spring/` artifact in `jetty-9.4.x` releases + + 7518 ArrayTrie getBest fails to match the empty string entry in certain + cases + + 7548 Interrupt flag is not always cleared in between requests + + 7567 Gzip compression not working for multipart/form-data when added to the + allowed list using addIncludedMimeTypes. + + 7569 Miconfigured headerCacheSize in can result in IllegalArgumentException + + 7615 HttpServletResponse.encodeURL not working for URLs starting with ../ + +jetty-9.4.45.v20220203 - 03 February 2022 + + 4275 Path Normalization/Traversal - Context Matching + + 6497 Replace SameFileAliasChecker + + 6687 Upgrade Infinispan in all active Jetty branches + + 6965 Expose Spec `ServerContainer.upgrade()` API + + 6969 Getting 404 failures when trying to enable `logging-log4j` module + + 6974 Major websocket memory change in 9.4.36 + + 7031 ResponseWriter.println(char) does not print newline + + 7059 NPE in AllowedResourceAliasChecker.getPath() + + 7073 Error in parse parameter in broken UTF-8 encoding + + 7078 CompressionPools are not shared between multiple contexts for 9.4 + WebSocket + + 7107 Client timeout and async close exceptions when setting max duration on + pool + + 7124 Add default methods on LifeCycle.Listener interface + + 7157 Multiplexed connection pools retain CLOSED entries + + 7243 Reset pooled ByteBuffer endianness + + 7266 Wrong ALPN jars are selected for newer versions of JDK8 + + 7271 It is necessary to set MAX_CAPACITY to ArrayTernaryTrie/ArrayTrie + + 7277 Allow override of `ServletRequest.getLocalName()` and `.getLocalPort()` + in post-intermediary scenarios + + 7297 Deprecate log4j 1.x support + + 7348 Slow CONNECT request causes NPE + + 7375 Some environments require Request scoping during session save + + 7435 Investigate Infinispan transitive dependencies + + 7440 ContextHandler.getAliasChecks() breaks Spring Boot + + 7496 Transient 400: Bad Request responses in jetty-9.4.45.v20220128 + +jetty-9.4.44.v20210927 - 27 September 2021 + + 3514 Use interpolation of versions from pom in mod files + + 6369 Increment default jetty.http2.rateControl.maxEventsPerSecond + + 6372 Review socket options configuration + + 6487 Expose ServletHolder getter in ServletHandler$ChainEnd for auditing + libraries to use + + 6491 onDataAvailable() not called when HttpParser is closed prematurely + + 6520 Error page has HTML error when writePoweredBy is enabled + + 6545 image/webp MIME type support + + 6553 Review usage of Authentication.UNAUTHENTICATED in SecurityHandler + + 6554 Allow creation of DefaultIdentityService without realmName + + 6558 Allow to configure return type in JSON array parsing + + 6562 HttpOutput.write(ByteBuffer buffer) + + 6603 HTTP/2 max local stream count exceeded + + 6617 Add basic auth support for OpenId token endpoint (client_secret_basic) + + 6618 ID token `azp` claim should not be required if `aud` is single value + array + + 6652 Improve ReservedThreadExecutor dump + + 6671 Update to apache jsp 8.5.70 + + 6772 Update to asm 9.2 + + 6853 Remove pack200 plugins + + 6860 Correct IPv6 format + + 6869 Correct Content-Type within HTML error pages + + 6870 Encode control characters in URIUtil.encodePath + + 6883 Welcome file redirects do not honor the relativeRedirectAllowed option + +jetty-9.4.43.v20210629 - 30 June 2021 + + 6379 Reduce contention in all `ByteBufferPool` implementations + + 6382 HttpClient TimeoutException message reports transient values + + 6400 QueuedThreadPool interrupts pool threads when stopped with zero timeout + + 6425 Update to asm 9.1 + + 6447 Deprecate support for UTF16 encoding in URIs (Resolves CVE-2021-34429) + + 6470 java.nio.ReadOnlyBufferException + + 6473 Improve alias checking in PathResource + +jetty-9.4.42.v20210604 - 04 June 2021 + + 5379 Better handling for wrong SNI + + 5931 SslConnection should implement getBytesIn()/getBytesOut() + + 6118 Display a warning when Hazelcast configuration does not contain Jetty + session serializer + + 6276 Support non-standard domains in SNI and X509 + + 6287 Class loading broken for WebSocketClient used inside webapp + + 6323 HttpClient gets stuck/never calls onComplete() when multiple requests + with timeouts are sent + +jetty-9.4.41.v20210516 - 16 May 2021 + + 6099 Cipher preference may break SNI if certificates have different key + types + + 6186 Add Null Protection on Log / Logger + + 6205 OpenIdAuthenticator may use incorrect redirect + + 6208 HTTP/2 max local stream count exceeded + + 6227 Better resolve race between `AsyncListener.onTimeout` and + `AsyncContext.dispatch` + + 6254 Total timeout not enforced for queued requests + + 6263 Review URI encoding in ConcatServlet & WelcomeFilter (Resolved + CVE-2021-28169) + + 6277 Better handle exceptions thrown from session destroy listener (Resolved + CVE-2021-34428) + + 6280 Copy ServletHolder class/instance properly during startWebapp + +jetty-9.4.40.v20210413 - 13 April 2021 + + 6082 SslConnection compacting + + 6105 HttpConnection.getBytesIn() incorrect for requests with chunked content + + 6148 Jetty start.jar always reports jetty.tag.version as `master` + + 6168 Improve handling of unconsumed content + 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 + + 6050 Websocket: NotUtf8Exception after upgrade to 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 + + 6072 jetty server high CPU when client send data length > 17408 - Resolves + CVE-2021-28165 + 6085 Jetty keeps Sessions in use after "Duplicate valid session cookies" Message - + 6101 Normalise ambiguous URIs - + 6102 Exclude webapps directory from deployment scan + + 6101 Normalise ambiguous URIs - Resolves CVE-2021-28164 + + 6102 Exclude webapps directory from deployment scan - Resolves + CVE-2021-28163 jetty-9.4.38.v20210224 - 24 February 2021 + 4275 Path Normalization/Traversal - Context Matching @@ -37,8 +174,8 @@ + 5979 Configurable gzip Etag extension jetty-9.4.36.v20210114 - 14 January 2021 - + 5310 Jetty Http2 client discards the response fames when there is GOAWAY and - sends RST_STREAM + + 5310 Jetty Http2 client discards the response frames when there is GOAWAY + and sends RST_STREAM + 5499 Improve temporary buffer usage for WebSocket PerMessageDeflate + 5633 Allow to configure HttpClient request authority + 5689 Jetty ssl keystorePath doesn't work with absolute path @@ -165,7 +302,6 @@ + 5057 `javax.servlet.include.context_path` attribute on root context. should be empty string, but is `"/"` + 5064 NotSerializableException for OpenIdConfiguration - + 5069 HttpClientTimeoutTests can occasionally fail due to unreachable network jetty-9.4.30.v20200611 - 11 June 2020 + 4776 Incorrect path matching for WebSocket using PathMappings @@ -468,10 +604,8 @@ + 3648 javax.websocket client container incorrectly creates Server SslContextFactory + 3698 Missing WebSocket ServerContainer after server restart - + 3700 stackoverflow in WebAppClassLoaderUrlStreamTest + 3708 Swap various java.lang.String replace() methods for better performant ones - + 3731 Add testing of CDI behaviors + 3736 NPE from WebAppClassLoader during CDI + 3746 ClassCastException in WriteFlusher.java - IdleState cannot be cast to FailedState @@ -673,7 +807,6 @@ jetty-9.4.14.v20181114 - 14 November 2018 + 3097 Duplicated programmatic Servlet Listeners causing duplicate calls - + 3103 HttpClientLoadTest reports a leak in byte buffer + 3104 Align jetty-schemas version within apache-jsp module as well jetty-9.4.13.v20181111 - 11 November 2018 @@ -737,8 +870,6 @@ Runtimes + 2075 Deprecating MultiException + 2135 Android 8.1 needs direct buffers for SSL/TLS to work - + 2233 JDK9 Test failure: - org.eclipse.jetty.server.ThreadStarvationTest.testWriteStarvation[https/ssl/tls] + 2342 File Descriptor Leak: Conscrypt: "Too many open files" + 2349 HTTP/2 max streams enforcement + 2398 MultiPartFormInputStream parsing should default to UTF-8, but allowed @@ -748,9 +879,6 @@ + 2530 Client waits forever for cancelled large uploads + 2560 Review PathResource exception handling + 2565 HashLoginService silently ignores file:/ config paths from 9.3.x - + 2592 Failing test on Windows: - ServerTimeoutsTest.testAsyncWriteIdleTimeoutFires[transport: HTTP] - + 2597 Failing tests on windows UnixSocketTest + 2631 IllegalArgumentException: Buffering capacity exceeded, from HttpClient HEAD Requests to resources referencing large body contents + 2648 LdapLoginModule fails with forceBinding=true under Java 9 @@ -812,7 +940,6 @@ hot redeploy on Windows + 2836 Sequential HTTPS requests may not reuse the same connection + 2844 Clean up webdefault.xml and DefaultServlet doc - + 2846 add unit test for ldap module + 2847 Wrap Connection.Listener invocations in try/catch + 2860 Leakage of HttpDestinations in HttpClient + 2871 Server reads -1 after client resets HTTP/2 stream @@ -1171,7 +1298,6 @@ + 1759 HTTP/2: producer can block in onReset + 1766 JettyClientContainerProvider does not actually use common objects correctly - + 1789 PropertyUserStoreTest failures in Windows + 1790 HTTP/2: 100% CPU usage seen during close/shutdown of endpoint + 1792 Accept ISO-8859-1 characters in response reason + 1794 Config properties typos in session-store-cache.mod @@ -1184,8 +1310,6 @@ + 1809 NPE: StandardDescriptorProcessor.visitSecurityConstraint() with null/no security manager + 1814 Move JavaVersion to jetty-util for future Java 9 support requirements - + 1816 HttpClientTest.testClientCannotValidateServerCertificate() hangs with - JDK 9 + 475546 ClosedChannelException when connection to HTTPS over HTTP proxy with CONNECT @@ -1407,11 +1531,8 @@ jetty-9.3.17.v20170317 - 17 March 2017 + 329 Javadoc for HttpTester and ServletTester needs to reference limited HTTP version scope - + 609 websocket ClientCloseTest testServerNoCloseHandshake is failing + 1015 Ensure jetty-distribution excludes git / temp files + 1047 ReadPendingException and then thread death - + 1049 test-jetty-osgi test exits/crashes the surefire forked JVM - + 1282 ByteArrayEndPointTest.testIdle() failure + 1296 Introduce HTTP parser "content complete" event + 1326 Jetty shutdown command got NullPointerException (http2 module added to start) @@ -1431,7 +1552,6 @@ + 1390 HashLoginService and "this.web-inf.url" property are incompatible + 1394 Default OS Locale/Encoding/Charset can cause test failures + 1396 Set-Cookie produced by Jetty is invalid for RFC6265 and Chrome - + 1399 SlowClientTest is failing on CI + 1401 HttpOutput.recycle() does not clear the write listener jetty-9.4.2.v20170220 - 20 February 2017 @@ -1535,9 +1655,6 @@ + 1229 ClassLoader constraint issue when using NativeWebSocketConfiguration with WEB-INF/lib/jetty-http.jar present + 1234 onBadMessage called from with handled message - + 1259 HostnameVerificationTest.simpleGetWithHostnameVerificationEnabledTest - is broken - + 1261 Intermittent H2C test failure AsyncIOServletTest.testAsyncReadEarlyEOF + 1262 BufferUtil.isMappedBuffer() uses reflection on private JDK fields + 1265 JAXB not available in JDK 9 + 1267 Request.getRemoteUser can throw undeclared IllegalStateException via @@ -1551,7 +1668,6 @@ + 1275 Get rid of Mockito + 1276 Remove org.eclipse.jetty.websocket.server.WebSocketServerFactory from SPI - + 1277 http2 alpn test error jetty-9.2.21.v20170120 - 20 January 2017 + 592 Support no-value Host header in HttpParser @@ -1587,7 +1703,6 @@ + 1099 PushCacheFilter pushes POST requests + 1108 Please improve logging in SslContextFactory when there are no approved cipher suites - + 1114 Add testcase for WSUF for stop/start of the Server + 1118 Filter.destroy() conflicts with ContainerLifeCycle.destroy() in WebSocketUpgradeFilter + 1123 Broken lifecycle for WebSocket's mappings diff -Nru jetty9-9.4.39/aggregates/jetty-all/pom.xml jetty9-9.4.50/aggregates/jetty-all/pom.xml --- jetty9-9.4.39/aggregates/jetty-all/pom.xml 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/aggregates/jetty-all/pom.xml 2022-11-07 20:40:40.000000000 +0000 @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.39.v20210325 + 9.4.50.v20221107 ../../pom.xml 4.0.0 diff -Nru jetty9-9.4.39/aggregates/jetty-all-compact3/pom.xml jetty9-9.4.50/aggregates/jetty-all-compact3/pom.xml --- jetty9-9.4.39/aggregates/jetty-all-compact3/pom.xml 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/aggregates/jetty-all-compact3/pom.xml 2022-11-07 20:40:40.000000000 +0000 @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.39.v20210325 + 9.4.50.v20221107 ../../pom.xml 4.0.0 diff -Nru jetty9-9.4.39/apache-jsp/pom.xml jetty9-9.4.50/apache-jsp/pom.xml --- jetty9-9.4.39/apache-jsp/pom.xml 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/pom.xml 2022-11-07 20:40:40.000000000 +0000 @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.39.v20210325 + 9.4.50.v20221107 4.0.0 apache-jsp @@ -11,6 +11,7 @@ ${project.groupId}.apache-jsp ${project.groupId}.apache.jsp + true @@ -47,13 +48,6 @@ - - org.jacoco - jacoco-maven-plugin - - true - - diff -Nru jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyJasperInitializer.java jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyJasperInitializer.java --- jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyJasperInitializer.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyJasperInitializer.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyTldPreScanned.java jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyTldPreScanned.java --- jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyTldPreScanned.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JettyTldPreScanned.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JuliLog.java jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JuliLog.java --- jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JuliLog.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/apache/jsp/JuliLog.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/jsp/JettyJspServlet.java jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/jsp/JettyJspServlet.java --- jetty9-9.4.39/apache-jsp/src/main/java/org/eclipse/jetty/jsp/JettyJspServlet.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/main/java/org/eclipse/jetty/jsp/JettyJspServlet.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyJspServlet.java jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyJspServlet.java --- jetty9-9.4.39/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyJspServlet.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyJspServlet.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyTldPreScanned.java jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyTldPreScanned.java --- jetty9-9.4.39/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyTldPreScanned.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJettyTldPreScanned.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJspFileNameToClass.java jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJspFileNameToClass.java --- jetty9-9.4.39/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJspFileNameToClass.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jsp/src/test/java/org/eclipse/jetty/jsp/TestJspFileNameToClass.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jstl/pom.xml jetty9-9.4.50/apache-jstl/pom.xml --- jetty9-9.4.39/apache-jstl/pom.xml 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jstl/pom.xml 2022-11-07 20:40:40.000000000 +0000 @@ -2,7 +2,7 @@ org.eclipse.jetty jetty-project - 9.4.39.v20210325 + 9.4.50.v20221107 4.0.0 apache-jstl @@ -11,6 +11,7 @@ jar ${project.groupId}.apache.jstl + true @@ -22,13 +23,6 @@ false - - org.jacoco - jacoco-maven-plugin - - true - - diff -Nru jetty9-9.4.39/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspConfig.java jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspConfig.java --- jetty9-9.4.39/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspConfig.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspConfig.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspIncludeTest.java jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspIncludeTest.java --- jetty9-9.4.39/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspIncludeTest.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JspIncludeTest.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JstlTest.java jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JstlTest.java --- jetty9-9.4.39/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JstlTest.java 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/apache-jstl/src/test/java/org/eclipse/jetty/jstl/JstlTest.java 2022-11-07 20:40:40.000000000 +0000 @@ -1,6 +1,6 @@ // // ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. +// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/build-resources/pom.xml jetty9-9.4.50/build-resources/pom.xml --- jetty9-9.4.39/build-resources/pom.xml 2021-03-25 14:36:22.000000000 +0000 +++ jetty9-9.4.50/build-resources/pom.xml 2022-11-07 20:40:40.000000000 +0000 @@ -2,25 +2,13 @@ 4.0.0 org.eclipse.jetty build-resources - 9.4.39.v20210325 + 9.4.50.v20221107 jar Jetty :: Build Resources UTF-8 + true - - - - org.apache.maven.plugins - maven-deploy-plugin - 2.8.2 - - - true - - - - diff -Nru jetty9-9.4.39/debian/README.Debian jetty9-9.4.50/debian/README.Debian --- jetty9-9.4.39/debian/README.Debian 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/README.Debian 2023-10-29 15:12:42.000000000 +0000 @@ -7,24 +7,36 @@ The configuration of the server is in /etc/jetty9. The configuration files listed in /etc/jetty9/jetty.conf are passed to the command -line of Jetty when it is started by /etc/init.d/jetty9 +line of Jetty when it is started by /lib/systemd/system/jetty9.service. Webapps can be deployed by placing the .war or .xml configuration file in /var/lib/jetty9/webapps (linked from /usr/share/jetty9/webapps) Installing: -$ sudo apt-get install jetty9 +$ sudo apt install jetty9 -Stopping: +Use the facilities of your init system to start and stop jetty9, e.g. with +systemd: -$ sudo service jetty9 stop +$ sudo systemctl start jetty9 --- +$ sudo systemctl stop jetty9 -This packaging is heavily based on the work done by Philipp Meier -and Michael Koch . --- -Greg Wilkins Thu Nov 8 18:10:06 EST 2007 -David Yu Thu May 21 15:06:30 EST 2009 +Jetty is sandboxed by systemd and only has write access to the following +directories: + - /var/lib/jetty9/ + - /var/log/jetty9/ + +If write access to other directories is required the service settings +have to be overridden. This is done by creating an override.conf file +in /etc/systemd/system/jetty9.service.d/ containing: + + [Service] + ReadWritePaths=/path/to/the/directory/ + +The service has to be restarted afterward with: + + systemctl daemon-reload + systemctl restart jetty9 diff -Nru jetty9-9.4.39/debian/changelog jetty9-9.4.50/debian/changelog --- jetty9-9.4.39/debian/changelog 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/changelog 2023-10-29 15:12:42.000000000 +0000 @@ -1,4 +1,19 @@ -jetty9 (9.4.39-3+deb11u2) bullseye-security; urgency=high +jetty9 (9.4.50-4+deb11u1) bullseye-security; urgency=high + + * Team upload. + * Backport Jetty 9 version from Bookworm. + * Fix CVE-2023-36478 and CVE-2023-44487: + Two remotely exploitable security vulnerabilities were discovered in Jetty + 9, a Java based web server and servlet engine. The HTTP/2 protocol + implementation did not sufficiently verify if HPACK header values exceed + their size limit. Furthermore the HTTP/2 protocol allowed a denial of + service (server resource consumption) because request cancellation can + reset many streams quickly. This problem is also known as Rapid Reset + Attack. + + -- Markus Koschany Sun, 29 Oct 2023 16:12:42 +0100 + +jetty9 (9.4.50-4+deb12u1) bookworm-security; urgency=high * Team upload. * The org.eclipse.jetty.servlets.CGI has been deprecated. It is potentially @@ -46,23 +61,108 @@ jetty-openid which have configured a nested `LoginService` and where that `LoginService` is capable of rejecting previously authenticated users. - -- Markus Koschany Wed, 27 Sep 2023 18:12:02 +0200 + -- Markus Koschany Wed, 27 Sep 2023 16:35:19 +0200 + +jetty9 (9.4.50-4) unstable; urgency=medium + + * Team upload. + * Revert the switch to libtomcat10-java. For now Jetty 9 only works correctly + with libtomcat9-java. (Closes: #1036798) + + -- Markus Koschany Sat, 27 May 2023 16:28:19 +0200 + +jetty9 (9.4.50-3) unstable; urgency=medium + + * Team upload. + * Depend on libtomcat10-java instead of libtomcat9-java. + * Add tomcat10-migration.patch. + * Ignore jetty-jaspi module because it does not work with Tomcat 10 yet. + + -- Markus Koschany Sun, 19 Feb 2023 13:41:00 +0100 + +jetty9 (9.4.50-2) unstable; urgency=medium + + * Depend on libeclipse-jdt-core-java instead of libecj-java + * Standards-Version updated to 4.6.2 + + -- Emmanuel Bourg Fri, 06 Jan 2023 12:08:38 +0100 + +jetty9 (9.4.50-1) unstable; urgency=medium + + * New upstream release + - Refreshed the patches + + -- Emmanuel Bourg Sun, 27 Nov 2022 22:47:21 +0100 + +jetty9 (9.4.49-1) unstable; urgency=medium + + * Team upload. + * New upstream version 9.4.49. + + -- Markus Koschany Thu, 22 Sep 2022 23:41:17 +0200 + +jetty9 (9.4.48-1) unstable; urgency=high + + * Team upload. + * New upstream version 9.4.48. + - Fix CVE-2022-2048 and CVE-2022-2047. + + -- Markus Koschany Mon, 18 Jul 2022 13:26:56 +0200 + +jetty9 (9.4.46-1) unstable; urgency=medium + + * New upstream release + - Refreshed the patches + + -- Emmanuel Bourg Mon, 02 May 2022 18:42:20 +0200 + +jetty9 (9.4.45-1) unstable; urgency=medium + + * Team upload. + * New upstream version 9.4.45. + * Remove haproxy binary file from the sources. + + -- Markus Koschany Fri, 11 Feb 2022 11:13:49 +0100 + +jetty9 (9.4.44-4) unstable; urgency=medium + + * Team upload. + * Add servlet-api.patch and correct the API version in jetty-home/pom.xml. + This used to work because libservlet3.1-java was pulled in as a transitive + dependency. (Closes: #1002274) + + -- Markus Koschany Sat, 25 Dec 2021 23:37:56 +0100 + +jetty9 (9.4.44-3) unstable; urgency=medium + + * Team upload. + * Ignore junit-bom artifact of scope import. + The junit-bom dependency caused several FTBFS because of + reverse-dependencies that did not depend on junit5. + + -- Markus Koschany Fri, 12 Nov 2021 12:14:57 +0100 -jetty9 (9.4.39-3+deb11u1) bullseye-security; urgency=high +jetty9 (9.4.44-2) unstable; urgency=medium * Team upload. - * Fix CVE-2022-2047: - In Eclipse Jetty the parsing of the authority segment of an http scheme - URI, the Jetty HttpURI class improperly detects an invalid input as a - hostname. This can lead to failures in a Proxy scenario. - * Fix CVE-2022-2048: - In Eclipse Jetty HTTP/2 server implementation, when encountering an invalid - HTTP/2 request, the error handling has a bug that can wind up not properly - cleaning up the active connections and associated resources. This can lead - to a Denial of Service scenario where there are no enough resources left to - process good requests. + * Update README.Debian and clarify how to override systemd security features. + (Closes: #994440) + * Replace deprecated configuration options in start.ini. + Thanks to Martin van Es for the report. (Closes: #994441) + + -- Markus Koschany Mon, 18 Oct 2021 11:51:58 +0200 + +jetty9 (9.4.44-1) unstable; urgency=medium + + * New upstream release + - Refreshed the patches + - Updated the Maven rules + * Depend on libservlet-api-java instead of libservlet3.1-java + * No longer remove the jetty user/group when purging the package + * Standards-Version updated to 4.6.0.1 + * Switch to debhelper level 13 - -- Markus Koschany Tue, 02 Aug 2022 11:57:46 +0200 + -- Emmanuel Bourg Mon, 18 Oct 2021 10:56:29 +0200 jetty9 (9.4.39-3) unstable; urgency=high diff -Nru jetty9-9.4.39/debian/control jetty9-9.4.50/debian/control --- jetty9-9.4.39/debian/control 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/control 2023-10-29 15:12:42.000000000 +0000 @@ -3,40 +3,44 @@ Priority: optional Maintainer: Debian Java Maintainers Uploaders: Emmanuel Bourg -Build-Depends: ant-optional, - debhelper-compat (= 12), - default-jdk, - dh-exec, - javahelper, - junit, - libasm-java (>= 7.0), - libbuild-helper-maven-plugin-java, - libgeronimo-jta-1.2-spec-java, - libmail-java, - libjboss-logging-java, - libjcip-annotations-java, - libjnr-unixsocket-java, - libmaven-antrun-plugin-java, - libmaven-assembly-plugin-java, - libmaven-bundle-plugin-java, - libmaven-dependency-plugin-java, - libmaven-shade-plugin-java, - libmockito-java, - libservlet3.1-java, - libspring-beans-java, - libtaglibs-standard-spec-java, - libtaglibs-standard-impl-java, - libtomcat9-java, - maven-debian-helper (>= 2.2.8~), - maven-repo-helper -Standards-Version: 4.5.1 +Build-Depends: + ant-optional, + debhelper-compat (= 13), + default-jdk, + dh-exec, + javahelper, + junit, + libasm-java (>= 7.0), + libbuild-helper-maven-plugin-java, + libel-api-java, + libgeronimo-jta-1.2-spec-java, + libjboss-logging-java, + libjcip-annotations-java, + libjnr-unixsocket-java, + libjsp-api-java, + libmail-java, + libmaven-antrun-plugin-java, + libmaven-assembly-plugin-java, + libmaven-bundle-plugin-java, + libmaven-dependency-plugin-java, + libmaven-shade-plugin-java, + libmockito-java, + libservlet-api-java, + libspring-beans-java, + libtaglibs-standard-impl-java, + libtaglibs-standard-spec-java, + libtomcat9-java, + libwebsocket-api-java, + maven-debian-helper (>= 2.2.8~), + maven-repo-helper +Standards-Version: 4.6.2 Vcs-Git: https://salsa.debian.org/java-team/jetty9.git Vcs-Browser: https://salsa.debian.org/java-team/jetty9 Homepage: http://www.eclipse.org/jetty/ Package: libjetty9-java Architecture: all -Depends: ${misc:Depends}, libservlet3.1-java +Depends: ${misc:Depends}, libel-api-java, libjsp-api-java, libservlet-api-java, libwebsocket-api-java Suggests: jetty9 Description: Java servlet engine and webserver -- core libraries Jetty is an Open Source HTTP Servlet Server written in 100% Java. @@ -48,15 +52,16 @@ Package: libjetty9-extra-java Architecture: all -Depends: libasm-java (>= 7.0), - libmail-java, - libjetty9-java (>= ${source:Version}), - libjnr-unixsocket-java, - libspring-beans-java, - libtaglibs-standard-spec-java, - libtaglibs-standard-impl-java, - libtomcat9-java, - ${misc:Depends} +Depends: + libasm-java (>= 7.0), + libjetty9-java (>= ${source:Version}), + libjnr-unixsocket-java, + libmail-java, + libspring-beans-java, + libtaglibs-standard-impl-java, + libtaglibs-standard-spec-java, + libtomcat9-java, + ${misc:Depends} Suggests: jetty9 Description: Java servlet engine and webserver -- extra libraries Jetty is an Open Source HTTP Servlet Server written in 100% Java. @@ -69,14 +74,15 @@ Package: jetty9 Architecture: all -Depends: adduser, - apache2-utils, - default-jre-headless (>= 2:1.8) | java8-runtime-headless, - libjetty9-java (>= ${source:Version}), - libjetty9-extra-java (>= ${source:Version}), - libecj-java, - lsb-base, - ${misc:Depends} +Depends: + adduser, + apache2-utils, + default-jre-headless (>= 2:1.8) | java8-runtime-headless, + libeclipse-jdt-core-java, + libjetty9-extra-java (>= ${source:Version}), + libjetty9-java (>= ${source:Version}), + lsb-base, + ${misc:Depends} Recommends: authbind Description: Java servlet engine and webserver Jetty is an Open Source HTTP Servlet Server written in 100% Java. diff -Nru jetty9-9.4.39/debian/copyright jetty9-9.4.50/debian/copyright --- jetty9-9.4.39/debian/copyright 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/copyright 2023-10-29 15:12:42.000000000 +0000 @@ -1,10 +1,12 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Jetty Source: http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git -Files-Excluded: jetty-documentation/* +Files-Excluded: + jetty-documentation/* + jetty-unixsocket/src/test/resources/haproxy Files: * -Copyright: 2006-2019, Mort Bay Consulting Pty. Ltd. +Copyright: 2006-2022, Mort Bay Consulting Pty. Ltd. License: Apache-2.0 or EPL-1.0 Files: jetty-ant/src/main/java/org/eclipse/jetty/ant/utils/TaskLog.java @@ -39,7 +41,7 @@ Copyright: 2003, Philipp Meier 2009, Ludovic Claude 2009, David Yu - 2012-2019, Debian Java Maintainers + 2012-2022, Debian Java Maintainers License: Apache-2.0 License: Apache-2.0 diff -Nru jetty9-9.4.39/debian/jetty9.dirs jetty9-9.4.50/debian/jetty9.dirs --- jetty9-9.4.39/debian/jetty9.dirs 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/jetty9.dirs 2023-10-29 15:12:42.000000000 +0000 @@ -1,8 +1,8 @@ etc/jetty9 etc/jetty9/start.d +usr/share/doc/jetty9 usr/share/jetty9 usr/share/jetty9/lib/ext -usr/share/doc/jetty9 +var/cache/jetty9 var/lib/jetty9/webapps var/log/jetty9 -var/cache/jetty9 diff -Nru jetty9-9.4.39/debian/jetty9.links jetty9-9.4.50/debian/jetty9.links --- jetty9-9.4.39/debian/jetty9.links 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/jetty9.links 2023-10-29 15:12:42.000000000 +0000 @@ -49,13 +49,13 @@ usr/share/java/jetty9-websocket-servlet.jar usr/share/jetty9/lib/websocket/websocket-servlet-${VERSION}.jar usr/share/java/jetty9-xml.jar usr/share/jetty9/lib/jetty-xml-${VERSION}.jar -usr/share/java/servlet-api-3.1.jar usr/share/jetty9/lib/servlet-api-3.1.jar +usr/share/java/servlet-api.jar usr/share/jetty9/lib/servlet-api-3.1.jar usr/share/java/tomcat9-annotations-api.jar usr/share/jetty9/lib/annotations/javax.annotation.jar usr/share/java/asm.jar usr/share/jetty9/lib/annotations/asm.jar usr/share/java/asm-analysis.jar usr/share/jetty9/lib/annotations/asm-analysis.jar usr/share/java/asm-commons.jar usr/share/jetty9/lib/annotations/asm-commons.jar usr/share/java/asm-tree.jar usr/share/jetty9/lib/annotations/asm-tree.jar -usr/share/java/ecj.jar usr/share/jetty9/lib/apache-jsp/jdt-core.jar +usr/share/java/eclipse-jdt-core.jar usr/share/jetty9/lib/apache-jsp/jdt-core.jar usr/share/java/tomcat9-api.jar usr/share/jetty9/lib/apache-jsp/tomcat-api.jar usr/share/java/tomcat9-el-api.jar usr/share/jetty9/lib/apache-jsp/tomcat-el-api.jar usr/share/java/tomcat9-jasper.jar usr/share/jetty9/lib/apache-jsp/tomcat-jasper.jar diff -Nru jetty9-9.4.39/debian/jetty9.postrm jetty9-9.4.50/debian/jetty9.postrm --- jetty9-9.4.39/debian/jetty9.postrm 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/jetty9.postrm 2023-10-29 15:12:42.000000000 +0000 @@ -19,9 +19,8 @@ ;; purge) - # Remove user/group and log files (don't remove everything under - # /var/lib/jetty because there might be user-installed webapps) - deluser jetty || true + # Remove log files (don't remove everything under /var/lib/jetty + # because there might be user-installed webapps) rm -rf /var/log/jetty9 if [ -d "/var/lib/jetty9" ] ; then rmdir --ignore-fail-on-non-empty /var/lib/jetty9 || true diff -Nru jetty9-9.4.39/debian/maven.ignoreRules jetty9-9.4.50/debian/maven.ignoreRules --- jetty9-9.4.39/debian/maven.ignoreRules 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/maven.ignoreRules 2023-10-29 15:12:42.000000000 +0000 @@ -23,10 +23,15 @@ # Test dependencies * * * * * test * * * * tests * +org.awaitility awaitility * * * * org.mortbay.jetty h2spec-maven-plugin * * * * org.eclipse.jetty test-* war * * * org.eclipse.jetty.tests test-* war * * * org.eclipse.jetty.example-async-rest example-async-rest-webapp war * * * +org.awaitility awaitility * * * * +org.apache.directory.api api-ldap-model +org.apache.directory.api api-util +org.apache.directory.api api-asn1-api # Ignored modules org.eclipse.jetty infinispan-embedded @@ -40,3 +45,10 @@ org.eclipse.jetty.cdi cdi-servlet org.eclipse.jetty.gcloud jetty-gcloud-session-manager org.eclipse.jetty.memcached jetty-memcached-sessions + +org.junit junit-bom * * * * + +# Since 9.4.45 + +org.infinispan infinispan-bom pom * * * +org.testcontainers testcontainers-bom pom * * * diff -Nru jetty9-9.4.39/debian/maven.rules jetty9-9.4.50/debian/maven.rules --- jetty9-9.4.39/debian/maven.rules 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/maven.rules 2023-10-29 15:12:42.000000000 +0000 @@ -1,7 +1,3 @@ -javax.servlet.jsp javax.jsp-api jar s/.*/2.3/ * * -javax.servlet javax.servlet-api * s/.*/3.1/ * * -javax.el javax.el-api jar s/.*/3.0/ * * -javax.websocket javax.websocket-api jar s/.*/1.0/ * * javax.websocket s/javax.websocket-client-api/javax.websocket-api/ * s/.*/1.0/ * * s/javax.annotation/org.apache.tomcat/ s/javax.annotation-api/tomcat-annotations-api/ * s/.*/9.x/ * * s/javax.transaction/org.apache.geronimo.specs/ s/javax.transaction-api/geronimo-jta_1.2_spec/ * s/.*/debian/ * * diff -Nru jetty9-9.4.39/debian/patches/01-maven-bundle-plugin-version.patch jetty9-9.4.50/debian/patches/01-maven-bundle-plugin-version.patch --- jetty9-9.4.39/debian/patches/01-maven-bundle-plugin-version.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/01-maven-bundle-plugin-version.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,9 +1,14 @@ From: Jakub Adam Date: Thu, 1 Mar 2012 21:32:54 +0100 Subject: maven-bundle-plugin-version + +--- + pom.xml | 1 + + 1 file changed, 1 insertion(+) + --- a/pom.xml +++ b/pom.xml -@@ -355,6 +355,7 @@ +@@ -436,6 +436,7 @@ org.apache.felix maven-bundle-plugin diff -Nru jetty9-9.4.39/debian/patches/02-import-alpn-api.patch jetty9-9.4.50/debian/patches/02-import-alpn-api.patch --- jetty9-9.4.39/debian/patches/02-import-alpn-api.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/02-import-alpn-api.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,4 +1,19 @@ -Description: Add the one-class ALPN API (http://git.eclipse.org/c/jetty/org.eclipse.jetty.alpn.git) +From: Debian Java Maintainers +Date: Sat, 25 Dec 2021 23:34:46 +0100 +Subject: Add the one-class ALPN API + (http://git.eclipse.org/c/jetty/org.eclipse.jetty.alpn.git) + +--- + jetty-alpn/jetty-alpn-api/pom.xml | 117 ++++++++++ + .../src/main/java/org/eclipse/jetty/alpn/ALPN.java | 249 +++++++++++++++++++++ + jetty-alpn/pom.xml | 1 + + 3 files changed, 367 insertions(+) + create mode 100644 jetty-alpn/jetty-alpn-api/pom.xml + create mode 100644 jetty-alpn/jetty-alpn-api/src/main/java/org/eclipse/jetty/alpn/ALPN.java + +diff --git a/jetty-alpn/jetty-alpn-api/pom.xml b/jetty-alpn/jetty-alpn-api/pom.xml +new file mode 100644 +index 0000000..4b3b511 --- /dev/null +++ b/jetty-alpn/jetty-alpn-api/pom.xml @@ -0,0 +1,117 @@ @@ -119,16 +134,9 @@ + + + ---- a/jetty-alpn/pom.xml -+++ b/jetty-alpn/pom.xml -@@ -10,6 +10,7 @@ - Jetty :: ALPN :: Parent - - -+ jetty-alpn-api - jetty-alpn-server - jetty-alpn-client - jetty-alpn-openjdk8-server +diff --git a/jetty-alpn/jetty-alpn-api/src/main/java/org/eclipse/jetty/alpn/ALPN.java b/jetty-alpn/jetty-alpn-api/src/main/java/org/eclipse/jetty/alpn/ALPN.java +new file mode 100644 +index 0000000..8a40558 --- /dev/null +++ b/jetty-alpn/jetty-alpn-api/src/main/java/org/eclipse/jetty/alpn/ALPN.java @@ -0,0 +1,249 @@ @@ -381,3 +389,15 @@ + } +} + +diff --git a/jetty-alpn/pom.xml b/jetty-alpn/pom.xml +index 73b2b73..ebf2eaa 100644 +--- a/jetty-alpn/pom.xml ++++ b/jetty-alpn/pom.xml +@@ -10,6 +10,7 @@ + Jetty :: ALPN :: Parent + + ++ jetty-alpn-api + jetty-alpn-server + jetty-alpn-client + jetty-alpn-openjdk8-server diff -Nru jetty9-9.4.39/debian/patches/04-weksocket-1.1-compatibility.patch jetty9-9.4.50/debian/patches/04-weksocket-1.1-compatibility.patch --- jetty9-9.4.39/debian/patches/04-weksocket-1.1-compatibility.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/04-weksocket-1.1-compatibility.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,12 +1,21 @@ -Description: Fix the compatibility with the websocket api 1.1 -Author: Emmanuel Bourg +From: Emmanuel Bourg +Date: Sat, 25 Dec 2021 23:34:46 +0100 +Subject: Fix the compatibility with the websocket api 1.1 + Forwarded: no +--- + .../java/org/eclipse/jetty/websocket/jsr356/JsrSession.java | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSession.java b/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSession.java +index c567a1f..3c1ca80 100644 --- a/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSession.java +++ b/jetty-websocket/javax-websocket-client-impl/src/main/java/org/eclipse/jetty/websocket/jsr356/JsrSession.java -@@ -145,6 +145,18 @@ +@@ -144,6 +144,18 @@ public class JsrSession extends WebSocketSession implements javax.websocket.Sess + } } - @Override ++ @Override + public void addMessageHandler(Class clazz, MessageHandler.Partial handler) throws IllegalStateException + { + throw new UnsupportedOperationException(); @@ -18,7 +27,6 @@ + throw new UnsupportedOperationException(); + } + -+ @Override + @Override public void close(CloseReason closeReason) throws IOException { - close(closeReason.getCloseCode().getCode(), closeReason.getReasonPhrase()); diff -Nru jetty9-9.4.39/debian/patches/06-ignore-jetty-documentation.patch jetty9-9.4.50/debian/patches/06-ignore-jetty-documentation.patch --- jetty9-9.4.39/debian/patches/06-ignore-jetty-documentation.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/06-ignore-jetty-documentation.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,9 +1,16 @@ -Description: Ignore the documentation module (removed from the upstream tarball to save some space) -Author: Emmanuel Bourg +From: Emmanuel Bourg +Date: Sat, 25 Dec 2021 23:34:46 +0100 +Subject: Ignore the documentation module (removed from the upstream tarball + to save some space) + Forwarded: not-needed +--- + pom.xml | 1 - + 1 file changed, 1 deletion(-) + --- a/pom.xml +++ b/pom.xml -@@ -140,7 +140,6 @@ +@@ -221,7 +221,6 @@ jetty-alpn jetty-home jetty-bom diff -Nru jetty9-9.4.39/debian/patches/07-assembly-plugin-configuration.patch jetty9-9.4.50/debian/patches/07-assembly-plugin-configuration.patch --- jetty9-9.4.39/debian/patches/07-assembly-plugin-configuration.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/07-assembly-plugin-configuration.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,25 +1,20 @@ -Description: Modified the assembly plugin configuration to use debian/assembly-config.xml - instead of the 'config' descriptor from the (missing) jetty-assembly-descriptors artifact -Author: Emmanuel Bourg +From: Emmanuel Bourg +Date: Sat, 25 Dec 2021 23:34:46 +0100 +Subject: Modified the assembly plugin configuration to use + debian/assembly-config.xml + Forwarded: not-needed ---- a/pom.xml -+++ b/pom.xml -@@ -1267,9 +1267,9 @@ - single - - -- -- config -- -+ -+ debian/assembly-config.xml -+ - - - ---- a/jetty-websocket/javax-websocket-server-impl/pom.xml -+++ b/jetty-websocket/javax-websocket-server-impl/pom.xml -@@ -80,9 +80,9 @@ + +instead of the 'config' descriptor from the (missing) jetty-assembly-descriptors artifact +--- + jetty-cdi/pom.xml | 6 +++--- + jetty-websocket/javax-websocket-server-impl/pom.xml | 6 +++--- + pom.xml | 6 +++--- + 3 files changed, 9 insertions(+), 9 deletions(-) + +--- a/jetty-cdi/pom.xml ++++ b/jetty-cdi/pom.xml +@@ -60,9 +60,9 @@ single @@ -27,14 +22,14 @@ - config - + -+ ../../debian/assembly-config.xml ++ ../debian/assembly-config.xml + ---- a/jetty-cdi/pom.xml -+++ b/jetty-cdi/pom.xml -@@ -50,9 +50,9 @@ +--- a/jetty-websocket/javax-websocket-server-impl/pom.xml ++++ b/jetty-websocket/javax-websocket-server-impl/pom.xml +@@ -80,9 +80,9 @@ single @@ -42,8 +37,23 @@ - config - + -+ ../debian/assembly-config.xml ++ ../../debian/assembly-config.xml + +--- a/pom.xml ++++ b/pom.xml +@@ -1364,9 +1364,9 @@ + single + + +- +- config +- ++ ++ debian/assembly-config.xml ++ + + + diff -Nru jetty9-9.4.39/debian/patches/08-ignore-jetty-test-policy.patch jetty9-9.4.50/debian/patches/08-ignore-jetty-test-policy.patch --- jetty9-9.4.39/debian/patches/08-ignore-jetty-test-policy.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/08-ignore-jetty-test-policy.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,6 +1,15 @@ -Description: Don't unpack the test files from jetty-test-policy when building jetty-client -Author: Emmanuel Bourg +From: Emmanuel Bourg +Date: Sat, 25 Dec 2021 23:34:46 +0100 +Subject: Don't unpack the test files from jetty-test-policy when building + jetty-client + Forwarded: not-needed +--- + jetty-client/pom.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/jetty-client/pom.xml b/jetty-client/pom.xml +index ac6bfd0..3ae9d0e 100644 --- a/jetty-client/pom.xml +++ b/jetty-client/pom.xml @@ -21,7 +21,7 @@ diff -Nru jetty9-9.4.39/debian/patches/09-tweak-distribution.patch jetty9-9.4.50/debian/patches/09-tweak-distribution.patch --- jetty9-9.4.39/debian/patches/09-tweak-distribution.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/09-tweak-distribution.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,74 +1,16 @@ -Description: Remove optional content from the distribution (documentation, sources, test files, examples) -Author: Emmanuel Bourg +From: Emmanuel Bourg +Date: Sat, 25 Dec 2021 23:34:46 +0100 +Subject: Remove optional content from the distribution (documentation, + sources, test files, examples) + Forwarded: not-needed ---- a/jetty-home/pom.xml -+++ b/jetty-home/pom.xml -@@ -74,16 +74,6 @@ - - - org.eclipse.jetty -- jetty-project -- ${project.version} -- version -- txt -- true -- ${assembly-directory}/ -- VERSION.txt -- -- -- org.eclipse.jetty - jetty-start - ${project.version} - shaded -@@ -98,7 +88,7 @@ - - - copy-setuid-deps -- generate-resources -+ none - - copy - -@@ -288,11 +278,12 @@ - - javax.servlet - javax.servlet-api -- 3.1.0 -+ 3.1 - true - ${assembly-directory}/lib - servlet-api-3.1.jar - -+ - - - -@@ -450,7 +442,7 @@ - - - unpack-infinispan-config -- generate-resources -+ none - - unpack - -@@ -518,7 +510,7 @@ - - - sources -- package -+ none - - single - +--- + jetty-distribution/pom.xml | 12 ++++++------ + jetty-home/pom.xml | 20 ++++++-------------- + 2 files changed, 12 insertions(+), 20 deletions(-) + +diff --git a/jetty-distribution/pom.xml b/jetty-distribution/pom.xml +index 6de9e06..9f1c398 100644 --- a/jetty-distribution/pom.xml +++ b/jetty-distribution/pom.xml @@ -75,7 +75,7 @@ @@ -125,3 +67,73 @@ unpack +diff --git a/jetty-home/pom.xml b/jetty-home/pom.xml +index 6b3f176..90471d7 100644 +--- a/jetty-home/pom.xml ++++ b/jetty-home/pom.xml +@@ -78,16 +78,6 @@ + + + +- +- org.eclipse.jetty +- jetty-project +- ${project.version} +- version +- txt +- true +- ${assembly-directory}/ +- VERSION.txt +- + + org.eclipse.jetty + jetty-start +@@ -104,7 +94,7 @@ + + + copy-setuid-deps +- generate-resources ++ none + + copy + +@@ -294,11 +284,12 @@ + + javax.servlet + javax.servlet-api +- 3.1.0 ++ 3.1 + true + ${assembly-directory}/lib + servlet-api-3.1.jar + ++ + + + +@@ -456,7 +448,7 @@ + + + unpack-infinispan-config +- generate-resources ++ none + + unpack + +@@ -524,7 +516,7 @@ + + + sources +- package ++ none + + single + diff -Nru jetty9-9.4.39/debian/patches/CVE-2021-28169.patch jetty9-9.4.50/debian/patches/CVE-2021-28169.patch --- jetty9-9.4.39/debian/patches/CVE-2021-28169.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2021-28169.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,520 +0,0 @@ -From: Markus Koschany -Date: Sat, 3 Jul 2021 19:01:20 +0200 -Subject: CVE-2021-28169 - -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989999 -Origin: https://github.com/eclipse/jetty.project/commit/1c05b0bcb181c759e98b060bded0b9376976b055 ---- - .../org/eclipse/jetty/server/ResourceService.java | 4 +- - .../org/eclipse/jetty/servlets/ConcatServlet.java | 4 +- - .../org/eclipse/jetty/servlets/WelcomeFilter.java | 8 +- - .../eclipse/jetty/servlets/ConcatServletTest.java | 83 ++++++++---- - .../eclipse/jetty/servlets/WelcomeFilterTest.java | 143 +++++++++++++++++++++ - .../jetty/webapp/WebAppDefaultServletTest.java | 142 ++++++++++++++++++++ - 6 files changed, 353 insertions(+), 31 deletions(-) - create mode 100644 jetty-servlets/src/test/java/org/eclipse/jetty/servlets/WelcomeFilterTest.java - create mode 100644 jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppDefaultServletTest.java - -diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceService.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceService.java -index 1edfd83..c908e8d 100644 ---- a/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceService.java -+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceService.java -@@ -240,7 +240,7 @@ public class ResourceService - // Find the content - content = _contentFactory.getContent(pathInContext, response.getBufferSize()); - if (LOG.isDebugEnabled()) -- LOG.info("content={}", content); -+ LOG.debug("content={}", content); - - // Not found? - if (content == null || !content.getResource().exists()) -@@ -430,7 +430,7 @@ public class ResourceService - return; - } - -- RequestDispatcher dispatcher = context.getRequestDispatcher(welcome); -+ RequestDispatcher dispatcher = context.getRequestDispatcher(URIUtil.encodePath(welcome)); - if (dispatcher != null) - { - // Forward to the index -diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ConcatServlet.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ConcatServlet.java -index f6dde94..55700b4 100644 ---- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ConcatServlet.java -+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/ConcatServlet.java -@@ -61,6 +61,7 @@ import org.eclipse.jetty.util.URIUtil; - * appropriate. This means that when not in development mode, the servlet must be - * restarted before changed content will be served.

- */ -+@Deprecated - public class ConcatServlet extends HttpServlet - { - private boolean _development; -@@ -125,7 +126,8 @@ public class ConcatServlet extends HttpServlet - } - } - -- RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(path); -+ // Use the original string and not the decoded path as the Dispatcher will decode again. -+ RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(part); - if (dispatcher != null) - dispatchers.add(dispatcher); - } -diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/WelcomeFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/WelcomeFilter.java -index 9a25538..3caa85a 100644 ---- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/WelcomeFilter.java -+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/WelcomeFilter.java -@@ -27,6 +27,8 @@ import javax.servlet.ServletRequest; - import javax.servlet.ServletResponse; - import javax.servlet.http.HttpServletRequest; - -+import org.eclipse.jetty.util.URIUtil; -+ - /** - * Welcome Filter - * This filter can be used to server an index file for a directory -@@ -41,6 +43,7 @@ import javax.servlet.http.HttpServletRequest; - * - * Requests to "/some/directory" will be redirected to "/some/directory/". - */ -+@Deprecated - public class WelcomeFilter implements Filter - { - private String welcome; -@@ -61,7 +64,10 @@ public class WelcomeFilter implements Filter - { - String path = ((HttpServletRequest)request).getServletPath(); - if (welcome != null && path.endsWith("/")) -- request.getRequestDispatcher(path + welcome).forward(request, response); -+ { -+ String uriInContext = URIUtil.encodePath(URIUtil.addPaths(path, welcome)); -+ request.getRequestDispatcher(uriInContext).forward(request, response); -+ } - else - chain.doFilter(request, response); - } -diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ConcatServletTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ConcatServletTest.java -index f8ea087..5cb9c89 100644 ---- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ConcatServletTest.java -+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/ConcatServletTest.java -@@ -26,6 +26,7 @@ import java.io.StringReader; - import java.nio.charset.StandardCharsets; - import java.nio.file.Files; - import java.nio.file.Path; -+import java.util.stream.Stream; - import javax.servlet.RequestDispatcher; - import javax.servlet.ServletException; - import javax.servlet.http.HttpServlet; -@@ -41,7 +42,12 @@ import org.eclipse.jetty.webapp.WebAppContext; - import org.junit.jupiter.api.AfterEach; - import org.junit.jupiter.api.BeforeEach; - import org.junit.jupiter.api.Test; -+import org.junit.jupiter.params.ParameterizedTest; -+import org.junit.jupiter.params.provider.Arguments; -+import org.junit.jupiter.params.provider.MethodSource; - -+import static org.hamcrest.MatcherAssert.assertThat; -+import static org.hamcrest.Matchers.startsWith; - import static org.junit.jupiter.api.Assertions.assertEquals; - import static org.junit.jupiter.api.Assertions.assertNotNull; - import static org.junit.jupiter.api.Assertions.assertNull; -@@ -112,7 +118,7 @@ public class ConcatServletTest - } - - @Test -- public void testWEBINFResourceIsNotServed() throws Exception -+ public void testDirectoryNotAccessible() throws Exception - { - File directoryFile = MavenTestingUtils.getTargetTestingDir(); - Path directoryPath = directoryFile.toPath(); -@@ -134,9 +140,8 @@ public class ConcatServletTest - // Verify that I can get the file programmatically, as required by the spec. - assertNotNull(context.getServletContext().getResource("/WEB-INF/one.js")); - -- // Having a path segment and then ".." triggers a special case -- // that the ConcatServlet must detect and avoid. -- String uri = contextPath + concatPath + "?/trick/../WEB-INF/one.js"; -+ // Make sure ConcatServlet cannot see file system files. -+ String uri = contextPath + concatPath + "?/trick/../../" + directoryFile.getName(); - String request = - "GET " + uri + " HTTP/1.1\r\n" + - "Host: localhost\r\n" + -@@ -144,35 +149,59 @@ public class ConcatServletTest - "\r\n"; - String response = connector.getResponse(request); - assertTrue(response.startsWith("HTTP/1.1 404 ")); -+ } - -- // Make sure ConcatServlet behaves well if it's case insensitive. -- uri = contextPath + concatPath + "?/trick/../web-inf/one.js"; -- request = -- "GET " + uri + " HTTP/1.1\r\n" + -- "Host: localhost\r\n" + -- "Connection: close\r\n" + -- "\r\n"; -- response = connector.getResponse(request); -- assertTrue(response.startsWith("HTTP/1.1 404 ")); -+ public static Stream webInfTestExamples() -+ { -+ return Stream.of( -+ // Cannot access WEB-INF. -+ Arguments.of("?/WEB-INF/", "HTTP/1.1 404 "), -+ Arguments.of("?/WEB-INF/one.js", "HTTP/1.1 404 "), -+ -+ // Having a path segment and then ".." triggers a special case that the ConcatServlet must detect and avoid. -+ Arguments.of("?/trick/../WEB-INF/one.js", "HTTP/1.1 404 "), -+ -+ // Make sure ConcatServlet behaves well if it's case insensitive. -+ Arguments.of("?/trick/../web-inf/one.js", "HTTP/1.1 404 "), -+ -+ // Make sure ConcatServlet behaves well if encoded. -+ Arguments.of("?/trick/..%2FWEB-INF%2Fone.js", "HTTP/1.1 404 "), -+ Arguments.of("?/%2557EB-INF/one.js", "HTTP/1.1 500 "), -+ Arguments.of("?/js/%252e%252e/WEB-INF/one.js", "HTTP/1.1 500 ") -+ ); -+ } - -- // Make sure ConcatServlet behaves well if encoded. -- uri = contextPath + concatPath + "?/trick/..%2FWEB-INF%2Fone.js"; -- request = -- "GET " + uri + " HTTP/1.1\r\n" + -- "Host: localhost\r\n" + -- "Connection: close\r\n" + -- "\r\n"; -- response = connector.getResponse(request); -- assertTrue(response.startsWith("HTTP/1.1 404 ")); -+ @ParameterizedTest -+ @MethodSource("webInfTestExamples") -+ public void testWEBINFResourceIsNotServed(String querystring, String expectedStatus) throws Exception -+ { -+ File directoryFile = MavenTestingUtils.getTargetTestingDir(); -+ Path directoryPath = directoryFile.toPath(); -+ Path hiddenDirectory = directoryPath.resolve("WEB-INF"); -+ Files.createDirectories(hiddenDirectory); -+ Path hiddenResource = hiddenDirectory.resolve("one.js"); -+ try (OutputStream output = Files.newOutputStream(hiddenResource)) -+ { -+ output.write("function() {}".getBytes(StandardCharsets.UTF_8)); -+ } - -- // Make sure ConcatServlet cannot see file system files. -- uri = contextPath + concatPath + "?/trick/../../" + directoryFile.getName(); -- request = -+ String contextPath = ""; -+ WebAppContext context = new WebAppContext(server, directoryPath.toString(), contextPath); -+ server.setHandler(context); -+ String concatPath = "/concat"; -+ context.addServlet(ConcatServlet.class, concatPath); -+ server.start(); -+ -+ // Verify that I can get the file programmatically, as required by the spec. -+ assertNotNull(context.getServletContext().getResource("/WEB-INF/one.js")); -+ -+ String uri = contextPath + concatPath + querystring; -+ String request = - "GET " + uri + " HTTP/1.1\r\n" + - "Host: localhost\r\n" + - "Connection: close\r\n" + - "\r\n"; -- response = connector.getResponse(request); -- assertTrue(response.startsWith("HTTP/1.1 404 ")); -+ String response = connector.getResponse(request); -+ assertThat(response, startsWith(expectedStatus)); - } - } -diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/WelcomeFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/WelcomeFilterTest.java -new file mode 100644 -index 0000000..65e6503 ---- /dev/null -+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/WelcomeFilterTest.java -@@ -0,0 +1,143 @@ -+// -+// ======================================================================== -+// 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.servlets; -+ -+import java.io.OutputStream; -+import java.nio.charset.StandardCharsets; -+import java.nio.file.Files; -+import java.nio.file.Path; -+import java.util.EnumSet; -+import java.util.stream.Stream; -+import javax.servlet.DispatcherType; -+ -+import org.eclipse.jetty.server.LocalConnector; -+import org.eclipse.jetty.server.Server; -+import org.eclipse.jetty.servlet.FilterHolder; -+import org.eclipse.jetty.toolchain.test.MavenTestingUtils; -+import org.eclipse.jetty.webapp.WebAppContext; -+import org.junit.jupiter.api.AfterEach; -+import org.junit.jupiter.api.BeforeEach; -+import org.junit.jupiter.params.ParameterizedTest; -+import org.junit.jupiter.params.provider.Arguments; -+import org.junit.jupiter.params.provider.MethodSource; -+ -+import static org.hamcrest.MatcherAssert.assertThat; -+import static org.hamcrest.Matchers.containsString; -+import static org.junit.jupiter.api.Assertions.assertNotNull; -+ -+public class WelcomeFilterTest -+{ -+ private Server server; -+ private LocalConnector connector; -+ -+ @BeforeEach -+ public void prepareServer() throws Exception -+ { -+ server = new Server(); -+ connector = new LocalConnector(server); -+ server.addConnector(connector); -+ -+ Path directoryPath = MavenTestingUtils.getTargetTestingDir().toPath(); -+ Files.createDirectories(directoryPath); -+ Path welcomeResource = directoryPath.resolve("welcome.html"); -+ try (OutputStream output = Files.newOutputStream(welcomeResource)) -+ { -+ output.write("

welcome page

".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ Path otherResource = directoryPath.resolve("other.html"); -+ try (OutputStream output = Files.newOutputStream(otherResource)) -+ { -+ output.write("

other resource

".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ Path hiddenDirectory = directoryPath.resolve("WEB-INF"); -+ Files.createDirectories(hiddenDirectory); -+ Path hiddenResource = hiddenDirectory.resolve("one.js"); -+ try (OutputStream output = Files.newOutputStream(hiddenResource)) -+ { -+ output.write("CONFIDENTIAL".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ Path hiddenWelcome = hiddenDirectory.resolve("index.html"); -+ try (OutputStream output = Files.newOutputStream(hiddenWelcome)) -+ { -+ output.write("CONFIDENTIAL".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ WebAppContext context = new WebAppContext(server, directoryPath.toString(), "/"); -+ server.setHandler(context); -+ String concatPath = "/*"; -+ -+ FilterHolder filterHolder = new FilterHolder(new WelcomeFilter()); -+ filterHolder.setInitParameter("welcome", "welcome.html"); -+ context.addFilter(filterHolder, concatPath, EnumSet.of(DispatcherType.REQUEST)); -+ server.start(); -+ -+ // Verify that I can get the file programmatically, as required by the spec. -+ assertNotNull(context.getServletContext().getResource("/WEB-INF/one.js")); -+ } -+ -+ @AfterEach -+ public void destroy() throws Exception -+ { -+ if (server != null) -+ server.stop(); -+ } -+ -+ public static Stream argumentsStream() -+ { -+ return Stream.of( -+ // Normal requests for the directory are redirected to the welcome page. -+ Arguments.of("/", new String[]{"HTTP/1.1 200 ", "

welcome page

"}), -+ -+ // Try a normal resource (will bypass the filter). -+ Arguments.of("/other.html", new String[]{"HTTP/1.1 200 ", "

other resource

"}), -+ -+ // Cannot access files in WEB-INF. -+ Arguments.of("/WEB-INF/one.js", new String[]{"HTTP/1.1 404 "}), -+ -+ // Cannot serve welcome from WEB-INF. -+ Arguments.of("/WEB-INF/", new String[]{"HTTP/1.1 404 "}), -+ -+ // Try to trick the filter into serving a protected resource. -+ Arguments.of("/WEB-INF/one.js#/", new String[]{"HTTP/1.1 404 "}), -+ Arguments.of("/js/../WEB-INF/one.js#/", new String[]{"HTTP/1.1 404 "}), -+ -+ // Test the URI is not double decoded in the dispatcher. -+ Arguments.of("/%2557EB-INF/one.js%23/", new String[]{"HTTP/1.1 404 "}) -+ ); -+ } -+ -+ @ParameterizedTest -+ @MethodSource("argumentsStream") -+ public void testWelcomeFilter(String uri, String[] contains) throws Exception -+ { -+ String request = -+ "GET " + uri + " HTTP/1.1\r\n" + -+ "Host: localhost\r\n" + -+ "Connection: close\r\n" + -+ "\r\n"; -+ String response = connector.getResponse(request); -+ for (String s : contains) -+ { -+ assertThat(response, containsString(s)); -+ } -+ } -+} -diff --git a/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppDefaultServletTest.java b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppDefaultServletTest.java -new file mode 100644 -index 0000000..933bb7a ---- /dev/null -+++ b/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/WebAppDefaultServletTest.java -@@ -0,0 +1,142 @@ -+// -+// ======================================================================== -+// 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.webapp; -+ -+import java.io.OutputStream; -+import java.nio.charset.StandardCharsets; -+import java.nio.file.Files; -+import java.nio.file.Path; -+import java.util.stream.Stream; -+ -+import org.eclipse.jetty.server.LocalConnector; -+import org.eclipse.jetty.server.Server; -+import org.eclipse.jetty.toolchain.test.MavenTestingUtils; -+import org.eclipse.jetty.util.IO; -+import org.junit.jupiter.api.AfterEach; -+import org.junit.jupiter.api.BeforeEach; -+import org.junit.jupiter.params.ParameterizedTest; -+import org.junit.jupiter.params.provider.Arguments; -+import org.junit.jupiter.params.provider.MethodSource; -+ -+import static org.hamcrest.MatcherAssert.assertThat; -+import static org.hamcrest.Matchers.containsString; -+import static org.junit.jupiter.api.Assertions.assertNotNull; -+ -+public class WebAppDefaultServletTest -+{ -+ private Server server; -+ private LocalConnector connector; -+ -+ @BeforeEach -+ public void prepareServer() throws Exception -+ { -+ server = new Server(); -+ connector = new LocalConnector(server); -+ server.addConnector(connector); -+ -+ Path directoryPath = MavenTestingUtils.getTargetTestingDir().toPath(); -+ IO.delete(directoryPath.toFile()); -+ Files.createDirectories(directoryPath); -+ Path welcomeResource = directoryPath.resolve("index.html"); -+ try (OutputStream output = Files.newOutputStream(welcomeResource)) -+ { -+ output.write("

welcome page

".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ Path otherResource = directoryPath.resolve("other.html"); -+ try (OutputStream output = Files.newOutputStream(otherResource)) -+ { -+ output.write("

other resource

".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ Path hiddenDirectory = directoryPath.resolve("WEB-INF"); -+ Files.createDirectories(hiddenDirectory); -+ Path hiddenResource = hiddenDirectory.resolve("one.js"); -+ try (OutputStream output = Files.newOutputStream(hiddenResource)) -+ { -+ output.write("this is confidential".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ // Create directory to trick resource service. -+ Path hackPath = directoryPath.resolve("%57EB-INF/one.js#/"); -+ Files.createDirectories(hackPath); -+ try (OutputStream output = Files.newOutputStream(hackPath.resolve("index.html"))) -+ { -+ output.write("this content does not matter".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ Path standardHashDir = directoryPath.resolve("welcome#"); -+ Files.createDirectories(standardHashDir); -+ try (OutputStream output = Files.newOutputStream(standardHashDir.resolve("index.html"))) -+ { -+ output.write("standard hash dir welcome".getBytes(StandardCharsets.UTF_8)); -+ } -+ -+ WebAppContext context = new WebAppContext(server, directoryPath.toString(), "/"); -+ server.setHandler(context); -+ server.start(); -+ -+ // Verify that I can get the file programmatically, as required by the spec. -+ assertNotNull(context.getServletContext().getResource("/WEB-INF/one.js")); -+ } -+ -+ @AfterEach -+ public void destroy() throws Exception -+ { -+ if (server != null) -+ server.stop(); -+ } -+ -+ public static Stream argumentsStream() -+ { -+ return Stream.of( -+ Arguments.of("/WEB-INF/", new String[]{"HTTP/1.1 404 "}), -+ Arguments.of("/welcome%23/", new String[]{"HTTP/1.1 200 ", "standard hash dir welcome"}), -+ -+ // Normal requests for the directory are redirected to the welcome page. -+ Arguments.of("/", new String[]{"HTTP/1.1 200 ", "

welcome page

"}), -+ -+ // We can be served other resources. -+ Arguments.of("/other.html", new String[]{"HTTP/1.1 200 ", "

other resource

"}), -+ -+ // The ContextHandler will filter these ones out as as WEB-INF is a protected target. -+ Arguments.of("/WEB-INF/one.js#/", new String[]{"HTTP/1.1 404 "}), -+ Arguments.of("/js/../WEB-INF/one.js#/", new String[]{"HTTP/1.1 404 "}), -+ -+ // Test the URI is not double decoded by the dispatcher that serves the welcome file (we get index.html not one.js). -+ Arguments.of("/%2557EB-INF/one.js%23/", new String[]{"HTTP/1.1 200 ", "this content does not matter"}) -+ ); -+ } -+ -+ @ParameterizedTest -+ @MethodSource("argumentsStream") -+ public void testResourceService(String uri, String[] contains) throws Exception -+ { -+ String request = -+ "GET " + uri + " HTTP/1.1\r\n" + -+ "Host: localhost\r\n" + -+ "Connection: close\r\n" + -+ "\r\n"; -+ String response = connector.getResponse(request); -+ for (String s : contains) -+ { -+ assertThat(response, containsString(s)); -+ } -+ } -+} diff -Nru jetty9-9.4.39/debian/patches/CVE-2021-34428.patch jetty9-9.4.50/debian/patches/CVE-2021-34428.patch --- jetty9-9.4.39/debian/patches/CVE-2021-34428.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2021-34428.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ -From: Markus Koschany -Date: Sat, 3 Jul 2021 19:00:12 +0200 -Subject: CVE-2021-34428 - -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990578 -Commit: https://github.com/eclipse/jetty.project/commit/087f486b4461746b4ded45833887b3ccb136ee85 ---- - .../org/eclipse/jetty/server/session/Session.java | 13 +-- - .../server/session/TestHttpSessionListener.java | 24 ++++-- - .../TestHttpSessionListenerWithWebappClasses.java | 6 +- - .../jetty/server/session/SessionListenerTest.java | 95 ++++++++++++++++++++-- - 4 files changed, 119 insertions(+), 19 deletions(-) - -diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java -index 65edd2e..4db2b40 100644 ---- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java -+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/Session.java -@@ -498,10 +498,7 @@ public class Session implements SessionHandler.SessionIf - { - try (Lock lock = _lock.lock()) - { -- if (isInvalid()) -- { -- throw new IllegalStateException("Session not valid"); -- } -+ checkValidForRead(); - return _sessionData.getLastAccessed(); - } - } -@@ -947,14 +944,18 @@ public class Session implements SessionHandler.SessionIf - // do the invalidation - _handler.callSessionDestroyedListeners(this); - } -+ catch (Exception e) -+ { -+ LOG.warn("Error during Session destroy listener", e); -+ } - finally - { - // call the attribute removed listeners and finally mark it - // as invalid - finishInvalidate(); -+ // tell id mgr to remove sessions with same id from all contexts -+ _handler.getSessionIdManager().invalidateAll(_sessionData.getId()); - } -- // tell id mgr to remove sessions with same id from all contexts -- _handler.getSessionIdManager().invalidateAll(_sessionData.getId()); - } - } - catch (Exception e) -diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListener.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListener.java -index e6cf138..060b6c8 100644 ---- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListener.java -+++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListener.java -@@ -31,16 +31,18 @@ public class TestHttpSessionListener implements HttpSessionListener - public List createdSessions = new ArrayList<>(); - public List destroyedSessions = new ArrayList<>(); - public boolean accessAttribute = false; -- public Exception ex = null; -+ public boolean lastAccessTime = false; -+ public Exception attributeException = null; -+ public Exception accessTimeException = null; - -- public TestHttpSessionListener(boolean access) -+ public TestHttpSessionListener(boolean accessAttribute, boolean lastAccessTime) - { -- accessAttribute = access; -+ this.accessAttribute = accessAttribute; -+ this.lastAccessTime = lastAccessTime; - } - - public TestHttpSessionListener() - { -- accessAttribute = false; - } - - public void sessionDestroyed(HttpSessionEvent se) -@@ -54,7 +56,19 @@ public class TestHttpSessionListener implements HttpSessionListener - } - catch (Exception e) - { -- ex = e; -+ attributeException = e; -+ } -+ } -+ -+ if (lastAccessTime) -+ { -+ try -+ { -+ se.getSession().getLastAccessedTime(); -+ } -+ catch (Exception e) -+ { -+ accessTimeException = e; - } - } - } -diff --git a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListenerWithWebappClasses.java b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListenerWithWebappClasses.java -index bec36c0..50e00fd 100644 ---- a/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListenerWithWebappClasses.java -+++ b/tests/test-sessions/test-sessions-common/src/main/java/org/eclipse/jetty/server/session/TestHttpSessionListenerWithWebappClasses.java -@@ -35,9 +35,9 @@ public class TestHttpSessionListenerWithWebappClasses extends TestHttpSessionLis - super(); - } - -- public TestHttpSessionListenerWithWebappClasses(boolean access) -+ public TestHttpSessionListenerWithWebappClasses(boolean attribute, boolean lastAccessTime) - { -- super(access); -+ super(attribute, lastAccessTime); - } - - @Override -@@ -52,7 +52,7 @@ public class TestHttpSessionListenerWithWebappClasses extends TestHttpSessionLis - } - catch (Exception cnfe) - { -- ex = cnfe; -+ attributeException = cnfe; - } - super.sessionDestroyed(se); - } -diff --git a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionListenerTest.java b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionListenerTest.java -index 76b566c..a20708c 100644 ---- a/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionListenerTest.java -+++ b/tests/test-sessions/test-sessions-common/src/test/java/org/eclipse/jetty/server/session/SessionListenerTest.java -@@ -58,6 +58,7 @@ import static org.hamcrest.Matchers.greaterThan; - import static org.hamcrest.Matchers.in; - import static org.hamcrest.Matchers.is; - import static org.junit.jupiter.api.Assertions.assertEquals; -+import static org.junit.jupiter.api.Assertions.assertFalse; - import static org.junit.jupiter.api.Assertions.assertNotEquals; - import static org.junit.jupiter.api.Assertions.assertNotNull; - import static org.junit.jupiter.api.Assertions.assertNull; -@@ -92,7 +93,7 @@ public class SessionListenerTest - TestServer server = new TestServer(0, inactivePeriod, scavengePeriod, - cacheFactory, storeFactory); - ServletContextHandler context = server.addContext(contextPath); -- TestHttpSessionListener listener = new TestHttpSessionListener(true); -+ TestHttpSessionListener listener = new TestHttpSessionListener(true, true); - context.getSessionHandler().addEventListener(listener); - TestServlet servlet = new TestServlet(); - ServletHolder holder = new ServletHolder(servlet); -@@ -136,6 +137,72 @@ public class SessionListenerTest - LifeCycle.stop(server); - } - } -+ -+ /** -+ * Test that if a session listener throws an exception during sessionDestroyed the session is still invalidated -+ */ -+ @Test -+ public void testListenerWithInvalidationException() throws Exception -+ { -+ String contextPath = ""; -+ String servletMapping = "/server"; -+ int inactivePeriod = 6; -+ int scavengePeriod = -1; -+ -+ DefaultSessionCacheFactory cacheFactory = new DefaultSessionCacheFactory(); -+ cacheFactory.setEvictionPolicy(SessionCache.NEVER_EVICT); -+ TestSessionDataStoreFactory storeFactory = new TestSessionDataStoreFactory(); -+ storeFactory.setGracePeriodSec(scavengePeriod); -+ -+ TestServer server = new TestServer(0, inactivePeriod, scavengePeriod, -+ cacheFactory, storeFactory); -+ ServletContextHandler context = server.addContext(contextPath); -+ ThrowingSessionListener listener = new ThrowingSessionListener(); -+ context.getSessionHandler().addEventListener(listener); -+ 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"); -+ assertNotNull(sessionCookie); -+ assertTrue(TestServlet.bindingListener.bound); -+ -+ String sessionId = TestServer.extractSessionId(sessionCookie); -+ -+ // 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()); -+ -+ assertTrue(TestServlet.bindingListener.unbound); -+ -+ //check session no longer exists -+ assertFalse(context.getSessionHandler().getSessionCache().contains(sessionId)); -+ assertFalse(context.getSessionHandler().getSessionCache().getSessionDataStore().exists(sessionId)); -+ } -+ finally -+ { -+ LifeCycle.stop(client); -+ } -+ } -+ finally -+ { -+ LifeCycle.stop(server); -+ } -+ } - - /** - * Test that listeners are called when a session expires -@@ -177,7 +244,7 @@ public class SessionListenerTest - ServletContextHandler context = server1.addContext(contextPath); - context.setClassLoader(contextClassLoader); - context.addServlet(holder, servletMapping); -- TestHttpSessionListener listener = new TestHttpSessionListenerWithWebappClasses(true); -+ TestHttpSessionListener listener = new TestHttpSessionListenerWithWebappClasses(true, true); - context.getSessionHandler().addEventListener(listener); - - try -@@ -206,7 +273,8 @@ public class SessionListenerTest - - assertThat(sessionId, is(in(listener.destroyedSessions))); - -- assertNull(listener.ex); -+ assertNull(listener.attributeException); -+ assertNull(listener.accessTimeException); - } - finally - { -@@ -241,7 +309,7 @@ public class SessionListenerTest - ServletHolder holder = new ServletHolder(servlet); - ServletContextHandler context = server1.addContext(contextPath); - context.addServlet(holder, servletMapping); -- TestHttpSessionListener listener = new TestHttpSessionListener(); -+ TestHttpSessionListener listener = new TestHttpSessionListener(true, true); - - context.getSessionHandler().addEventListener(listener); - -@@ -276,7 +344,8 @@ public class SessionListenerTest - - assertTrue(listener.destroyedSessions.contains("1234")); - -- assertNull(listener.ex); -+ assertNull(listener.attributeException); -+ assertNull(listener.accessTimeException); - } - finally - { -@@ -301,6 +370,22 @@ public class SessionListenerTest - { - } - } -+ -+ public static class ThrowingSessionListener implements HttpSessionListener -+ { -+ -+ @Override -+ public void sessionCreated(HttpSessionEvent se) -+ { -+ } -+ -+ @Override -+ public void sessionDestroyed(HttpSessionEvent se) -+ { -+ throw new IllegalStateException("Exception during sessionDestroyed"); -+ } -+ -+ } - - @Test - public void testSessionListeners() diff -Nru jetty9-9.4.39/debian/patches/CVE-2021-34429.patch jetty9-9.4.50/debian/patches/CVE-2021-34429.patch --- jetty9-9.4.39/debian/patches/CVE-2021-34429.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2021-34429.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,1102 +0,0 @@ -From: Markus Koschany -Date: Sun, 18 Jul 2021 18:58:17 +0200 -Subject: CVE-2021-34429 - -Bug-Debian: https://bugs.debian.org/991188 -Origin: https://github.com/eclipse/jetty.project/pull/6477 ---- - .../main/java/org/eclipse/jetty/http/HttpURI.java | 13 +- - .../java/org/eclipse/jetty/http/HttpURITest.java | 135 ++++++----- - .../jetty/rewrite/handler/RedirectUtil.java | 4 +- - .../jetty/rewrite/handler/ValidUrlRuleTest.java | 14 +- - .../jetty/server/handler/ContextHandler.java | 30 +-- - .../jetty/server/handler/ResourceHandler.java | 2 + - .../eclipse/jetty/server/HttpConnectionTest.java | 6 + - .../handler/ContextHandlerGetResourceTest.java | 22 ++ - .../org/eclipse/jetty/servlet/RequestURITest.java | 42 +++- - .../main/java/org/eclipse/jetty/util/URIUtil.java | 266 +++++++++++---------- - .../eclipse/jetty/util/resource/FileResource.java | 7 +- - .../eclipse/jetty/util/resource/PathResource.java | 19 +- - .../org/eclipse/jetty/util/resource/Resource.java | 6 +- - .../eclipse/jetty/util/resource/URLResource.java | 9 +- - .../jetty/util/URIUtilCanonicalPathTest.java | 20 ++ - .../eclipse/jetty/util/resource/ResourceTest.java | 18 ++ - 16 files changed, 374 insertions(+), 239 deletions(-) - -diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java -index 74c04e0..9538468 100644 ---- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java -+++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java -@@ -617,10 +617,12 @@ public class HttpURI - } - else if (_path != null) - { -- String canonical = URIUtil.canonicalPath(_path); -- if (canonical == null) -- throw new BadMessageException("Bad URI"); -- _decodedPath = URIUtil.decodePath(canonical); -+ // The RFC requires this to be canonical before decoding, but this can leave dot segments and dot dot segments -+ // which are not canonicalized and could be used in an attempt to bypass security checks. -+ String decodedNonCanonical = URIUtil.decodePath(_path); -+ _decodedPath = URIUtil.canonicalPath(decodedNonCanonical); -+ if (_decodedPath == null) -+ throw new IllegalArgumentException("Bad URI"); - } - } - -@@ -670,7 +672,8 @@ public class HttpURI - } - - /** -- * @return True if the URI has either an {@link #hasAmbiguousSegment()} or {@link #hasAmbiguousSeparator()}. -+ * @return True if the URI has either an {@link #hasAmbiguousSegment()} or {@link #hasAmbiguousEmptySegment()} -+ * or {@link #hasAmbiguousSeparator()} or {@link #hasAmbiguousParameter()} - */ - public boolean isAmbiguous() - { -diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java -index f6b95ba..af56161 100644 ---- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java -+++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java -@@ -230,84 +230,77 @@ public class HttpURITest - assertEquals("", uri.toString()); - - uri.setPath("/path/info"); -- assertEquals("/path/info", uri.toString()); -+ assertEquals("/path/info", uri.toString()); - -- uri.setAuthority("host", 8080); -- assertEquals("//host:8080/path/info", uri.toString()); -+ uri.setAuthority("host", 8080); -+ assertEquals("//host:8080/path/info", uri.toString()); - -- uri.setParam("param"); -- assertEquals("//host:8080/path/info;param", uri.toString()); -+ uri.setParam("param"); -+ assertEquals("//host:8080/path/info;param", uri.toString()); - -- uri.setQuery("a=b"); -- assertEquals("//host:8080/path/info;param?a=b", uri.toString()); -+ uri.setQuery("a=b"); -+ assertEquals("//host:8080/path/info;param?a=b", uri.toString()); - -- uri.setScheme("http"); -- assertEquals("http://host:8080/path/info;param?a=b", uri.toString()); -+ uri.setScheme("http"); -+ assertEquals("http://host:8080/path/info;param?a=b", uri.toString()); - -- uri.setPathQuery("/other;xxx/path;ppp?query"); -- assertEquals("http://host:8080/other;xxx/path;ppp?query", uri.toString()); -+ uri.setPathQuery("/other;xxx/path;ppp?query"); -+ assertEquals("http://host:8080/other;xxx/path;ppp?query", uri.toString()); - -- assertThat(uri.getScheme(), is("http")); -- assertThat(uri.getAuthority(), is("host:8080")); -- assertThat(uri.getHost(), is("host")); -- assertThat(uri.getPort(), is(8080)); -- assertThat(uri.getPath(), is("/other;xxx/path;ppp")); -- assertThat(uri.getDecodedPath(), is("/other/path")); -- assertThat(uri.getParam(), is("ppp")); -- assertThat(uri.getQuery(), is("query")); -- assertThat(uri.getPathQuery(), is("/other;xxx/path;ppp?query")); -+ assertThat(uri.getScheme(), is("http")); -+ assertThat(uri.getAuthority(), is("host:8080")); -+ assertThat(uri.getHost(), is("host")); -+ assertThat(uri.getPort(), is(8080)); -+ assertThat(uri.getPath(), is("/other;xxx/path;ppp")); -+ assertThat(uri.getDecodedPath(), is("/other/path")); -+ assertThat(uri.getParam(), is("ppp")); -+ assertThat(uri.getQuery(), is("query")); -+ assertThat(uri.getPathQuery(), is("/other;xxx/path;ppp?query")); - -- uri.setPathQuery(null); -- assertEquals("http://host:8080?query", uri.toString()); // Yes silly result! -+ uri.setPathQuery(null); -+ assertEquals("http://host:8080?query", uri.toString()); // Yes silly result! - -- uri.setQuery(null); -- assertEquals("http://host:8080", uri.toString()); -+ uri.setQuery(null); -+ assertEquals("http://host:8080", uri.toString()); - -- uri.setPathQuery("/other;xxx/path;ppp?query"); -- assertEquals("http://host:8080/other;xxx/path;ppp?query", uri.toString()); -+ uri.setPathQuery("/other;xxx/path;ppp?query"); -+ assertEquals("http://host:8080/other;xxx/path;ppp?query", uri.toString()); - -- uri.setScheme(null); -- assertEquals("//host:8080/other;xxx/path;ppp?query", uri.toString()); -+ uri.setScheme(null); -+ assertEquals("//host:8080/other;xxx/path;ppp?query", uri.toString()); - -- uri.setAuthority(null, -1); -- assertEquals("/other;xxx/path;ppp?query", uri.toString()); -+ uri.setAuthority(null, -1); -+ assertEquals("/other;xxx/path;ppp?query", uri.toString()); - -- uri.setParam(null); -- assertEquals("/other;xxx/path?query", uri.toString()); -+ uri.setParam(null); -+ assertEquals("/other;xxx/path?query", uri.toString()); - -- uri.setQuery(null); -- assertEquals("/other;xxx/path", uri.toString()); -+ uri.setQuery(null); -+ assertEquals("/other;xxx/path", uri.toString()); - -- uri.setPath(null); -- assertEquals("", uri.toString()); -- } -+ uri.setPath(null); -+ assertEquals("", uri.toString()); -+} - -- public static Stream decodePathTests() -- { -- return Arrays.stream(new Object[][] -- { -- // Simple path example -- {"http://host/path/info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -- {"//host/path/info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -- {"/path/info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -- -- // legal non ambiguous relative paths -- {"http://host/../path/info", null, EnumSet.noneOf(Ambiguous.class)}, -- {"http://host/path/../info", "/info", EnumSet.noneOf(Ambiguous.class)}, -- {"http://host/path/./info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -- {"//host/path/../info", "/info", EnumSet.noneOf(Ambiguous.class)}, -- {"//host/path/./info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -- {"/path/../info", "/info", EnumSet.noneOf(Ambiguous.class)}, -- {"/path/./info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -- {"path/../info", "info", EnumSet.noneOf(Ambiguous.class)}, -- {"path/./info", "path/info", EnumSet.noneOf(Ambiguous.class)}, -- -- // illegal paths -- {"//host/../path/info", null, EnumSet.noneOf(Ambiguous.class)}, -- {"/../path/info", null, EnumSet.noneOf(Ambiguous.class)}, -- {"../path/info", null, EnumSet.noneOf(Ambiguous.class)}, -- {"/path/%XX/info", null, EnumSet.noneOf(Ambiguous.class)}, -- {"/path/%2/F/info", null, EnumSet.noneOf(Ambiguous.class)}, -+public static Stream decodePathTests() -+{ -+ return Arrays.stream(new Object[][] -+ { -+ // Simple path example -+ {"http://host/path/info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"//host/path/info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"/path/info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -+ -+ // legal non ambiguous relative paths -+ {"http://host/../path/info", null, EnumSet.noneOf(Ambiguous.class)}, -+ {"http://host/path/../info", "/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"http://host/path/./info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"//host/path/../info", "/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"//host/path/./info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"/path/../info", "/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"/path/./info", "/path/info", EnumSet.noneOf(Ambiguous.class)}, -+ {"path/../info", "info", EnumSet.noneOf(Ambiguous.class)}, -+ {"path/./info", "path/info", EnumSet.noneOf(Ambiguous.class)}, - - // ambiguous dot encodings - {"scheme://host/path/%2e/info", "/path/./info", EnumSet.of(Ambiguous.SEGMENT)}, -@@ -370,4 +363,20 @@ public class HttpURITest - assertThat(decodedPath, nullValue()); - } - } -+ -+ public static Stream queryData() -+ { -+ return Stream.of( -+ new String[]{"/path?p=%U20AC", "p=%U20AC"}, -+ new String[]{"/path?p=%u20AC", "p=%u20AC"} -+ ).map(Arguments::of); -+ } -+ -+ @ParameterizedTest -+ @MethodSource("queryData") -+ public void testEncodedQuery(String input, String expectedQuery) -+ { -+ HttpURI httpURI = new HttpURI(input); -+ assertThat("[" + input + "] .query", httpURI.getQuery(), is(expectedQuery)); -+ } - } -diff --git a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java -index 6fc476d..1040018 100644 ---- a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java -+++ b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectUtil.java -@@ -53,12 +53,12 @@ public final class RedirectUtil - String path = request.getRequestURI(); - String parent = (path.endsWith("/")) ? path : URIUtil.parentPath(path); - location = URIUtil.canonicalPath(URIUtil.addEncodedPaths(parent, location)); -- if (!location.startsWith("/")) -+ if (location != null && !location.startsWith("/")) - url.append('/'); - } - - if (location == null) -- throw new IllegalStateException("path cannot be above root"); -+ throw new IllegalStateException("redirect path cannot be above root"); - url.append(location); - - location = url.toString(); -diff --git a/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ValidUrlRuleTest.java b/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ValidUrlRuleTest.java -index fae7150..bf63fe7 100644 ---- a/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ValidUrlRuleTest.java -+++ b/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ValidUrlRuleTest.java -@@ -24,6 +24,7 @@ import org.junit.jupiter.api.Test; - - import static org.junit.jupiter.api.Assertions.assertEquals; - import static org.junit.jupiter.api.Assertions.assertFalse; -+import static org.junit.jupiter.api.Assertions.assertThrows; - import static org.junit.jupiter.api.Assertions.assertTrue; - - @SuppressWarnings("unused") -@@ -75,6 +76,12 @@ public class ValidUrlRuleTest extends AbstractRuleTestCase - - @Test - public void testInvalidJsp() throws Exception -+ { -+ assertThrows(IllegalArgumentException.class, () -> _request.setURIPathQuery("/jsp/bean1.jsp%00")); -+ } -+ -+ @Test -+ public void testInvalidJspWithNullByte() throws Exception - { - _rule.setCode("405"); - _rule.setReason("foo"); -@@ -113,6 +120,12 @@ public class ValidUrlRuleTest extends AbstractRuleTestCase - assertEquals(200, _response.getStatus()); - } - -+ @Test -+ public void testInvalidShamrock() throws Exception -+ { -+ assertThrows(IllegalArgumentException.class, () -> _request.setURIPathQuery("/jsp/shamrock-%00%E2%98%98.jsp")); -+ } -+ - @Test - public void testCharacters() throws Exception - { -@@ -124,4 +137,3 @@ public class ValidUrlRuleTest extends AbstractRuleTestCase - //@checkstyle-enable-check : IllegalTokenText - } - } -- -diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java -index 4e16095..48bebcb 100644 ---- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java -+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java -@@ -1948,7 +1948,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - - try - { -- path = URIUtil.canonicalPath(path); - Resource resource = _baseResource.addPath(path); - - if (checkAlias(path, resource)) -@@ -2135,9 +2134,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - return ContextHandler.this; - } - -- /* -- * @see javax.servlet.ServletContext#getContext(java.lang.String) -- */ - @Override - public ServletContext getContext(String uripath) - { -@@ -2226,9 +2222,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - return null; - } - -- /* -- * @see javax.servlet.ServletContext#getMimeType(java.lang.String) -- */ - @Override - public String getMimeType(String file) - { -@@ -2237,9 +2230,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - return _mimeTypes.getMimeByExtension(file); - } - -- /* -- * @see javax.servlet.ServletContext#getRequestDispatcher(java.lang.String) -- */ - @Override - public RequestDispatcher getRequestDispatcher(String uriInContext) - { -@@ -2253,6 +2243,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - - try - { -+ // The uriInContext will be canonicalized by HttpURI. - HttpURI uri = new HttpURI(null, null, 0, uriInContext); - - String pathInfo = URIUtil.canonicalPath(uri.getDecodedPath()); -@@ -2278,6 +2269,10 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - @Override - public String getRealPath(String path) - { -+ // This is an API call from the application which may have arbitrary non canonical paths passed -+ // Thus we canonicalize here, to avoid the enforcement of only canonical paths in -+ // ContextHandler.this.getResource(path). -+ path = URIUtil.canonicalPath(path); - if (path == null) - return null; - if (path.length() == 0) -@@ -2312,9 +2307,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - return null; - } - -- /* -- * @see javax.servlet.ServletContext#getResourceAsStream(java.lang.String) -- */ - @Override - public InputStream getResourceAsStream(String path) - { -@@ -2402,9 +2394,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - return o; - } - -- /* -- * @see javax.servlet.ServletContext#getAttributeNames() -- */ - @Override - public Enumeration getAttributeNames() - { -@@ -2423,9 +2412,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - return Collections.enumeration(set); - } - -- /* -- * @see javax.servlet.ServletContext#setAttribute(java.lang.String, java.lang.Object) -- */ - @Override - public void setAttribute(String name, Object value) - { -@@ -2452,9 +2438,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - } - } - -- /* -- * @see javax.servlet.ServletContext#removeAttribute(java.lang.String) -- */ - @Override - public void removeAttribute(String name) - { -@@ -2471,9 +2454,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu - } - } - -- /* -- * @see javax.servlet.ServletContext#getServletContextName() -- */ - @Override - public String getServletContextName() - { -diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java -index b5b0db0..63d94ff 100644 ---- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java -+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java -@@ -188,7 +188,9 @@ public class ResourceHandler extends HandlerWrapper implements ResourceFactory, - } - } - else if (_context != null) -+ { - r = _context.getResource(path); -+ } - - if ((r == null || !r.exists()) && path.endsWith("/jetty-dir.css")) - r = getStylesheet(); -diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java -index 72197e6..ada19a0 100644 ---- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java -+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java -@@ -829,6 +829,12 @@ public class HttpConnectionTest - "\r\n"); - checkContains(response, 0, "HTTP/1.1 200"); //now fallback to iso-8859-1 - -+ response = connector.getResponse("GET /foo/bar%c0%00 HTTP/1.1\r\n" + -+ "Host: localhost\r\n" + -+ "Connection: close\r\n" + -+ "\r\n"); -+ checkContains(response, 0, "HTTP/1.1 400"); -+ - response = connector.getResponse("GET /bad/utf8%c1 HTTP/1.1\r\n" + - "Host: localhost\r\n" + - "Connection: close\r\n" + -diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java -index a6a471b..8daa933 100644 ---- a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java -+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java -@@ -245,6 +245,28 @@ public class ContextHandlerGetResourceTest - assertNull(url); - } - -+ @Test -+ public void testAlias() throws Exception -+ { -+ String path = "/./index.html"; -+ Resource resource = context.getResource(path); -+ assertNull(resource); -+ URL resourceURL = context.getServletContext().getResource(path); -+ assertFalse(resourceURL.getPath().contains("/./")); -+ -+ path = "/down/../index.html"; -+ resource = context.getResource(path); -+ assertNull(resource); -+ resourceURL = context.getServletContext().getResource(path); -+ assertFalse(resourceURL.getPath().contains("/../")); -+ -+ path = "//index.html"; -+ resource = context.getResource(path); -+ assertNull(resource); -+ resourceURL = context.getServletContext().getResource(path); -+ assertNull(resourceURL); -+ } -+ - @Test - public void testDeep() throws Exception - { -diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/RequestURITest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/RequestURITest.java -index de3814a..2b3e29a 100644 ---- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/RequestURITest.java -+++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/RequestURITest.java -@@ -196,7 +196,6 @@ public class RequestURITest - // Read the response. - String response = readResponse(client); - -- // TODO: is HTTP/1.1 response appropriate for an HTTP/1.0 request? - assertThat(response, Matchers.containsString("HTTP/1.1 200 OK")); - assertThat(response, Matchers.containsString("RequestURI: " + expectedReqUri)); - assertThat(response, Matchers.containsString("QueryString: " + expectedQuery)); -@@ -223,4 +222,45 @@ public class RequestURITest - assertThat(response, Matchers.containsString("QueryString: " + expectedQuery)); - } - } -+ -+ public static Stream badData() -+ { -+ List ret = new ArrayList<>(); -+ ret.add(Arguments.of("/hello\000")); -+ ret.add(Arguments.of("/hello%00")); -+ ret.add(Arguments.of("/hello%u0000")); -+ ret.add(Arguments.of("/hello\000/world")); -+ ret.add(Arguments.of("/hello%00world")); -+ ret.add(Arguments.of("/hello%u0000world")); -+ ret.add(Arguments.of("/hello%GG")); -+ ret.add(Arguments.of("/hello%;/world")); -+ ret.add(Arguments.of("/hello/../../world")); -+ ret.add(Arguments.of("/hello/..;/world")); -+ ret.add(Arguments.of("/hello/..;?/world")); -+ ret.add(Arguments.of("/hello/%#x/../world")); -+ ret.add(Arguments.of("/../hello/world")); -+ ret.add(Arguments.of("/hello%u00u00/world")); -+ ret.add(Arguments.of("hello")); -+ -+ return ret.stream(); -+ } -+ -+ @ParameterizedTest -+ @MethodSource("badData") -+ public void testGetBadRequestsURIHTTP10(String rawpath) throws Exception -+ { -+ try (Socket client = newSocket(serverURI.getHost(), serverURI.getPort())) -+ { -+ OutputStream os = client.getOutputStream(); -+ -+ String request = String.format("GET %s HTTP/1.0\r\n\r\n", rawpath); -+ os.write(request.getBytes(StandardCharsets.ISO_8859_1)); -+ os.flush(); -+ -+ // Read the response. -+ String response = readResponse(client); -+ -+ assertThat(response, Matchers.containsString("HTTP/1.1 400 ")); -+ } -+ } - } -diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java -index 6818e54..7cf5862 100644 ---- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java -+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java -@@ -475,8 +475,8 @@ public class URIUtil - char u = path.charAt(i + 1); - if (u == 'u') - { -- // TODO remove %u support in jetty-10 -- // this is wrong. This is a codepoint not a char -+ // In Jetty-10 UTF16 encoding is only supported with UriCompliance.Violation.UTF16_ENCODINGS. -+ // This is wrong. This is a codepoint not a char - builder.append((char)(0xffff & TypeUtil.parseInt(path, i + 2, 4, 16))); - i += 5; - } -@@ -537,7 +537,6 @@ public class URIUtil - { - throw new IllegalArgumentException("cannot decode URI", e); - } -- - } - - /* Decode a URI path and strip parameters of ISO-8859-1 path -@@ -562,8 +561,7 @@ public class URIUtil - char u = path.charAt(i + 1); - if (u == 'u') - { -- // TODO remove %u encoding support in jetty-10 -- // This is wrong. This is a codepoint not a char -+ // In Jetty-10 UTF16 encoding is only supported with UriCompliance.Violation.UTF16_ENCODINGS. // This is wrong. This is a codepoint not a char - builder.append((char)(0xffff & TypeUtil.parseInt(path, i + 2, 4, 16))); - i += 5; - } -@@ -782,143 +780,139 @@ public class URIUtil - } - - /** -- * Convert an encoded path to a canonical form. -+ * Convert a partial URI to a canonical form. - *

-- * All instances of "." and ".." are factored out. -+ * All segments of "." and ".." are factored out. - * Null is returned if the path tries to .. above its root. - *

- * -- * @param path the path to convert, decoded, with path separators '/' and no queries. -+ * @param uri the encoded URI from the path onwards, which may contain query strings and/or fragments - * @return the canonical path, or null if path traversal above root. -+ * @see #canonicalPath(String) -+ * @see #canonicalURI(String) - */ -- public static String canonicalPath(String path) -+ public static String canonicalURI(String uri) - { -- // See https://tools.ietf.org/html/rfc3986#section-5.2.4 -- -- if (path == null || path.isEmpty()) -- return path; -+ if (uri == null || uri.isEmpty()) -+ return uri; - -- int end = path.length(); -+ boolean slash = true; -+ int end = uri.length(); - int i = 0; -- int dots = 0; - -+ // Initially just loop looking if we may need to normalize - loop: while (i < end) - { -- char c = path.charAt(i); -+ char c = uri.charAt(i); - switch (c) - { - case '/': -- dots = 0; -+ slash = true; - break; - - case '.': -- if (dots == 0) -- { -- dots = 1; -+ if (slash) - break loop; -- } -- dots = -1; -+ slash = false; - break; - -+ case '?': -+ case '#': -+ // Nothing to normalize so return original path -+ return uri; -+ - default: -- dots = -1; -+ slash = false; - } - - i++; - } - -+ // Nothing to normalize so return original path - if (i == end) -- return path; -+ return uri; - -- StringBuilder canonical = new StringBuilder(path.length()); -- canonical.append(path, 0, i); -+ // We probably need to normalize, so copy to path so far into builder -+ StringBuilder canonical = new StringBuilder(uri.length()); -+ canonical.append(uri, 0, i); - -+ // Loop looking for single and double dot segments -+ int dots = 1; - i++; -- while (i <= end) -+ loop : while (i < end) - { -- char c = i < end ? path.charAt(i) : '\0'; -+ char c = uri.charAt(i); - switch (c) - { -- case '\0': -- if (dots == 2) -- { -- if (canonical.length() < 2) -- return null; -- canonical.setLength(canonical.length() - 1); -- canonical.setLength(canonical.lastIndexOf("/") + 1); -- } -- break; -- - case '/': -- switch (dots) -- { -- case 1: -- break; -- -- case 2: -- if (canonical.length() < 2) -- return null; -- canonical.setLength(canonical.length() - 1); -- canonical.setLength(canonical.lastIndexOf("/") + 1); -- break; -- -- default: -- canonical.append(c); -- } -+ if (doDotsSlash(canonical, dots)) -+ return null; -+ slash = true; - dots = 0; - break; - -+ case '?': -+ case '#': -+ // finish normalization at a query -+ break loop; -+ - case '.': -- switch (dots) -- { -- case 0: -- dots = 1; -- break; -- case 1: -- dots = 2; -- break; -- case 2: -- canonical.append("..."); -- dots = -1; -- break; -- default: -- canonical.append('.'); -- } -+ // Count dots only if they are leading in the segment -+ if (dots > 0) -+ dots++; -+ else if (slash) -+ dots = 1; -+ else -+ canonical.append('.'); -+ slash = false; - break; - - default: -- switch (dots) -- { -- case 1: -- canonical.append('.'); -- break; -- case 2: -- canonical.append(".."); -- break; -- default: -- } -+ // Add leading dots to the path -+ while (dots-- > 0) -+ canonical.append('.'); - canonical.append(c); -- dots = -1; -+ dots = 0; -+ slash = false; - } -- - i++; - } -+ -+ // process any remaining dots -+ if (doDots(canonical, dots)) -+ return null; -+ -+ // append any query -+ if (i < end) -+ canonical.append(uri, i, end); -+ - return canonical.toString(); - } - - /** -- * Convert a path to a cananonical form. -- *

-- * All instances of "." and ".." are factored out. -- *

-+ * @param path the encoded URI from the path onwards, which may contain query strings and/or fragments -+ * @return the canonical path, or null if path traversal above root. -+ * @deprecated Use {@link #canonicalURI(String)} -+ */ -+ @Deprecated -+ public static String canonicalEncodedPath(String path) -+ { -+ return canonicalURI(path); -+ } -+ -+ /** -+ * Convert a decoded URI path to a canonical form. - *

-+ * All segments of "." and ".." are factored out. - * Null is returned if the path tries to .. above its root. - *

- * -- * @param path the path to convert (expects URI/URL form, encoded, and with path separators '/') -+ * @param path the decoded URI path to convert. Any special characters (e.g. '?', "#") are assumed to be part of -+ * the path segments. - * @return the canonical path, or null if path traversal above root. -+ * @see #canonicalURI(String) - */ -- public static String canonicalEncodedPath(String path) -+ public static String canonicalPath(String path) - { - if (path == null || path.isEmpty()) - return path; -@@ -927,8 +921,8 @@ public class URIUtil - int end = path.length(); - int i = 0; - -- loop: -- while (i < end) -+ // Initially just loop looking if we may need to normalize -+ loop: while (i < end) - { - char c = path.charAt(i); - switch (c) -@@ -943,9 +937,6 @@ public class URIUtil - slash = false; - break; - -- case '?': -- return path; -- - default: - slash = false; - } -@@ -953,56 +944,31 @@ public class URIUtil - i++; - } - -+ // Nothing to normalize so return original path - if (i == end) - return path; - -+ // We probably need to normalize, so copy to path so far into builder - StringBuilder canonical = new StringBuilder(path.length()); - canonical.append(path, 0, i); - -+ // Loop looking for single and double dot segments - int dots = 1; - i++; -- while (i <= end) -+ while (i < end) - { -- char c = i < end ? path.charAt(i) : '\0'; -+ char c = path.charAt(i); - switch (c) - { -- case '\0': - case '/': -- case '?': -- switch (dots) -- { -- case 0: -- if (c != '\0') -- canonical.append(c); -- break; -- -- case 1: -- if (c == '?') -- canonical.append(c); -- break; -- -- case 2: -- if (canonical.length() < 2) -- return null; -- canonical.setLength(canonical.length() - 1); -- canonical.setLength(canonical.lastIndexOf("/") + 1); -- if (c == '?') -- canonical.append(c); -- break; -- default: -- while (dots-- > 0) -- { -- canonical.append('.'); -- } -- if (c != '\0') -- canonical.append(c); -- } -- -+ if (doDotsSlash(canonical, dots)) -+ return null; - slash = true; - dots = 0; - break; - - case '.': -+ // Count dots only if they are leading in the segment - if (dots > 0) - dots++; - else if (slash) -@@ -1013,20 +979,66 @@ public class URIUtil - break; - - default: -+ // Add leading dots to the path - while (dots-- > 0) -- { - canonical.append('.'); -- } - canonical.append(c); - dots = 0; - slash = false; - } -- - i++; - } -+ -+ // process any remaining dots -+ if (doDots(canonical, dots)) -+ return null; -+ - return canonical.toString(); - } - -+ private static boolean doDots(StringBuilder canonical, int dots) -+ { -+ switch (dots) -+ { -+ case 0: -+ case 1: -+ break; -+ case 2: -+ if (canonical.length() < 2) -+ return true; -+ canonical.setLength(canonical.length() - 1); -+ canonical.setLength(canonical.lastIndexOf("/") + 1); -+ break; -+ default: -+ while (dots-- > 0) -+ canonical.append('.'); -+ } -+ return false; -+ } -+ -+ private static boolean doDotsSlash(StringBuilder canonical, int dots) -+ { -+ switch (dots) -+ { -+ case 0: -+ canonical.append('/'); -+ break; -+ case 1: -+ break; -+ case 2: -+ if (canonical.length() < 2) -+ return true; -+ canonical.setLength(canonical.length() - 1); -+ canonical.setLength(canonical.lastIndexOf("/") + 1); -+ break; -+ default: -+ while (dots-- > 0) -+ canonical.append('.'); -+ canonical.append('/'); -+ } -+ return false; -+ } -+ - /** - * Convert a path to a compact form. - * All instances of "//" and "///" etc. are factored out to single "/" -diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java -index 9ccfe96..d62b117 100644 ---- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java -+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileResource.java -@@ -271,8 +271,11 @@ public class FileResource extends Resource - assertValidPath(path); - path = org.eclipse.jetty.util.URIUtil.canonicalPath(path); - -- if (path == null) -- throw new MalformedURLException(); -+ // Check that the path is within the root, -+ // but use the original path to create the -+ // resource, to preserve aliasing. -+ if (URIUtil.canonicalPath(path) == null) -+ throw new MalformedURLException(path); - - if ("/".equals(path)) - return this; -diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java -index af377b1..67a31b3 100644 ---- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java -+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java -@@ -97,6 +97,13 @@ public class PathResource extends Resource - abs = path.toAbsolutePath(); - } - -+ // Any normalization difference means it's an alias, -+ // and we don't want to bother further to follow -+ // symlinks as it's an alias anyway. -+ Path normal = path.normalize(); -+ if (!isSameName(abs, normal)) -+ return normal; -+ - try - { - if (Files.isSymbolicLink(path)) -@@ -104,11 +111,8 @@ public class PathResource extends Resource - if (Files.exists(path)) - { - Path real = abs.toRealPath(FOLLOW_LINKS); -- - if (!isSameName(abs, real)) -- { - return real; -- } - } - } - catch (IOException e) -@@ -363,12 +367,13 @@ public class PathResource extends Resource - @Override - public Resource addPath(final String subpath) throws IOException - { -- String cpath = URIUtil.canonicalPath(subpath); -- -- if ((cpath == null) || (cpath.length() == 0)) -+ // Check that the path is within the root, -+ // but use the original path to create the -+ // resource, to preserve aliasing. -+ if (URIUtil.canonicalPath(subpath) == null) - throw new MalformedURLException(subpath); - -- if ("/".equals(cpath)) -+ if ("/".equals(subpath)) - return this; - - // subpaths are always under PathResource -diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java -index 4574436..3448e94 100644 ---- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java -+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java -@@ -459,10 +459,12 @@ public abstract class Resource implements ResourceFactory, Closeable - * Returns the resource contained inside the current resource with the - * given name. - * -- * @param path The path segment to add, which is not encoded -+ * @param path The path segment to add, which is not encoded. The path may be non canonical, but if so then -+ * the resulting Resource will return true from {@link #isAlias()}. - * @return the Resource for the resolved path within this Resource. - * @throws IOException if unable to resolve the path -- * @throws MalformedURLException if the resolution of the path fails because the input path parameter is malformed. -+ * @throws MalformedURLException if the resolution of the path fails because the input path parameter is malformed, or -+ * a relative path attempts to access above the root resource. - */ - public abstract Resource addPath(String path) - throws IOException, MalformedURLException; -diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResource.java b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResource.java -index ffd9c1c..40d68ab 100644 ---- a/jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResource.java -+++ b/jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResource.java -@@ -271,10 +271,11 @@ public class URLResource extends Resource - public Resource addPath(String path) - throws IOException - { -- if (path == null) -- return null; -- -- path = URIUtil.canonicalPath(path); -+ // Check that the path is within the root, -+ // but use the original path to create the -+ // resource, to preserve aliasing. -+ if (URIUtil.canonicalPath(path) == null) -+ throw new MalformedURLException(path); - - return newResource(URIUtil.addEncodedPaths(_url.toExternalForm(), URIUtil.encodePath(path)), _useCaches); - } -diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java -index 82f2771..a272926 100644 ---- a/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java -+++ b/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilCanonicalPathTest.java -@@ -149,4 +149,24 @@ public class URIUtilCanonicalPathTest - { - assertThat(URIUtil.canonicalPath(input), is(expectedResult)); - } -+ -+ public static Stream queries() -+ { -+ String[][] data = -+ { -+ {"/ctx/../dir?/../index.html", "/dir?/../index.html"}, -+ {"/get-files?file=/etc/passwd", "/get-files?file=/etc/passwd"}, -+ {"/get-files?file=../../../../../passwd", "/get-files?file=../../../../../passwd"} -+ }; -+ return Stream.of(data).map(Arguments::of); -+ } -+ -+ @ParameterizedTest -+ @MethodSource("queries") -+ public void testQuery(String input, String expectedPath) -+ { -+ String actual = URIUtil.canonicalURI(input); -+ assertThat(actual, is(expectedPath)); -+ } -+ - } -diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java -index c93dc73..5d7c7b2 100644 ---- a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java -+++ b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java -@@ -21,6 +21,7 @@ package org.eclipse.jetty.util.resource; - import java.io.File; - import java.io.IOException; - import java.io.InputStream; -+import java.net.MalformedURLException; - import java.net.URI; - import java.net.URL; - import java.nio.file.Path; -@@ -45,6 +46,8 @@ import static org.hamcrest.Matchers.equalTo; - import static org.hamcrest.Matchers.startsWith; - import static org.junit.jupiter.api.Assertions.assertEquals; - import static org.junit.jupiter.api.Assertions.assertNotNull; -+import static org.junit.jupiter.api.Assertions.assertThrows; -+import static org.junit.jupiter.api.Assertions.assertTrue; - - public class ResourceTest - { -@@ -325,4 +328,19 @@ public class ResourceTest - - assertEquals(rb, ra); - } -+ -+ @Test -+ public void testClimbAboveBase() throws Exception -+ { -+ Resource resource = Resource.newResource("/foo/bar"); -+ assertThrows(MalformedURLException.class, () -> resource.addPath("..")); -+ -+ Resource same = resource.addPath("."); -+ assertNotNull(same); -+ assertTrue(same.isAlias()); -+ -+ assertThrows(MalformedURLException.class, () -> resource.addPath("./..")); -+ -+ assertThrows(MalformedURLException.class, () -> resource.addPath("./../bar")); -+ } - } diff -Nru jetty9-9.4.39/debian/patches/CVE-2022-2047.patch jetty9-9.4.50/debian/patches/CVE-2022-2047.patch --- jetty9-9.4.39/debian/patches/CVE-2022-2047.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2022-2047.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,199 +0,0 @@ -From: Markus Koschany -Date: Mon, 1 Aug 2022 19:56:17 +0200 -Subject: CVE-2022-2047 - -Origin: https://github.com/eclipse/jetty.project/pull/8146 ---- - .../java/org/eclipse/jetty/client/HttpRequest.java | 8 ++++--- - .../eclipse/jetty/client/HttpClientURITest.java | 2 ++ - .../main/java/org/eclipse/jetty/http/HttpURI.java | 22 +++++++++++++++++- - .../java/org/eclipse/jetty/http/HttpURITest.java | 26 ++++++++++++++++++++++ - .../org/eclipse/jetty/proxy/ConnectHandler.java | 2 +- - .../java/org/eclipse/jetty/server/Request.java | 13 +++++++++-- - 6 files changed, 66 insertions(+), 7 deletions(-) - -diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java -index 2b94c47..5419926 100644 ---- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java -+++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequest.java -@@ -197,6 +197,8 @@ public class HttpRequest implements Request - String rawPath = uri.getRawPath(); - if (rawPath == null) - rawPath = ""; -+ if (!rawPath.startsWith("/")) -+ rawPath = "/" + rawPath; - this.path = rawPath; - String query = uri.getRawQuery(); - if (query != null) -@@ -924,14 +926,14 @@ public class HttpRequest implements Request - return result; - } - -- private URI newURI(String uri) -+ private URI newURI(String path) - { - try - { - // Handle specially the "OPTIONS *" case, since it is possible to create a URI from "*" (!). -- if ("*".equals(uri)) -+ if ("*".equals(path)) - return null; -- URI result = new URI(uri); -+ URI result = new URI(path); - return result.isOpaque() ? null : result; - } - catch (URISyntaxException x) -diff --git a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientURITest.java b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientURITest.java -index 13ca948..aed6175 100644 ---- a/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientURITest.java -+++ b/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientURITest.java -@@ -29,8 +29,10 @@ import java.net.SocketException; - import java.net.URLEncoder; - import java.nio.charset.StandardCharsets; - import java.util.Locale; -+import java.util.concurrent.CountDownLatch; - import java.util.concurrent.ExecutionException; - import java.util.concurrent.TimeUnit; -+import java.util.concurrent.atomic.AtomicReference; - import javax.servlet.ServletException; - import javax.servlet.http.HttpServletRequest; - import javax.servlet.http.HttpServletResponse; -diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java -index 9538468..2fe6420 100644 ---- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java -+++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java -@@ -234,7 +234,7 @@ public class HttpURI - _uri = uri; - - if (HttpMethod.CONNECT.is(method)) -- _path = uri; -+ parse(State.HOST, uri, 0, uri.length()); - else - parse(uri.startsWith("/") ? State.PATH : State.START, uri, 0, uri.length()); - } -@@ -844,16 +844,29 @@ public class HttpURI - */ - public void setAuthority(String host, int port) - { -+ if (host != null && !isPathValidForAuthority(_path)) -+ throw new IllegalArgumentException("Relative path with authority"); - _host = host; - _port = port; - _uri = null; - } - -+ private boolean isPathValidForAuthority(String path) -+ { -+ if (path == null) -+ return true; -+ if (path.isEmpty() || "*".equals(path)) -+ return true; -+ return path.startsWith("/"); -+ } -+ - /** - * @param path the path - */ - public void setPath(String path) - { -+ if (hasAuthority() && !isPathValidForAuthority(path)) -+ throw new IllegalArgumentException("Relative path with authority"); - _uri = null; - _path = null; - if (path != null) -@@ -862,6 +875,8 @@ public class HttpURI - - public void setPathQuery(String pathQuery) - { -+ if (hasAuthority() && !isPathValidForAuthority(pathQuery)) -+ throw new IllegalArgumentException("Relative path with authority"); - _uri = null; - _path = null; - _decodedPath = null; -@@ -875,6 +890,11 @@ public class HttpURI - parse(State.PATH, pathQuery, 0, pathQuery.length()); - } - -+ private boolean hasAuthority() -+ { -+ return _host != null; -+ } -+ - public void setQuery(String query) - { - _query = query; -diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java -index af56161..7060efd 100644 ---- a/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java -+++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java -@@ -106,6 +106,32 @@ public class HttpURITest - assertThat(uri.getPath(), is("/bar")); - } - -+ @Test -+ public void testCONNECT() -+ { -+ HttpURI uri = new HttpURI(); -+ -+ uri.parseRequestTarget("CONNECT", "host:80"); -+ assertThat(uri.getHost(), is("host")); -+ assertThat(uri.getPort(), is(80)); -+ assertThat(uri.getPath(), nullValue()); -+ -+ uri.parseRequestTarget("CONNECT", "host"); -+ assertThat(uri.getHost(), is("host")); -+ assertThat(uri.getPort(), is(-1)); -+ assertThat(uri.getPath(), nullValue()); -+ -+ uri.parseRequestTarget("CONNECT", "192.168.0.1:8080"); -+ assertThat(uri.getHost(), is("192.168.0.1")); -+ assertThat(uri.getPort(), is(8080)); -+ assertThat(uri.getPath(), nullValue()); -+ -+ uri.parseRequestTarget("CONNECT", "[::1]:8080"); -+ assertThat(uri.getHost(), is("[::1]")); -+ assertThat(uri.getPort(), is(8080)); -+ assertThat(uri.getPath(), nullValue()); -+ } -+ - @Test - public void testExtB() throws Exception - { -diff --git a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java -index 12518ed..a463fef 100644 ---- a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java -+++ b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ConnectHandler.java -@@ -195,7 +195,7 @@ public class ConnectHandler extends HandlerWrapper - { - if (HttpMethod.CONNECT.is(request.getMethod())) - { -- String serverAddress = request.getRequestURI(); -+ String serverAddress = baseRequest.getHttpURI().getAuthority(); - if (LOG.isDebugEnabled()) - LOG.debug("CONNECT request for {}", serverAddress); - -diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java -index 66a568d..bc89c02 100644 ---- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java -+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java -@@ -1841,9 +1841,18 @@ public class Request implements HttpServletRequest - throw new BadMessageException("Ambiguous path parameter in URI"); - } - -- _originalURI = uri.isAbsolute() && request.getHttpVersion() != HttpVersion.HTTP_2 ? uri.toString() : uri.getPathQuery(); -+ String encoded; -+ if (HttpMethod.CONNECT.is(request.getMethod())) -+ { -+ _originalURI = uri.getAuthority(); -+ encoded = "/"; -+ } -+ else -+ { -+ _originalURI = uri.isAbsolute() && request.getHttpVersion() != HttpVersion.HTTP_2 ? uri.toString() : uri.getPathQuery(); -+ encoded = uri.getPath(); -+ } - -- String encoded = uri.getPath(); - String path; - if (encoded == null) - { diff -Nru jetty9-9.4.39/debian/patches/CVE-2022-2048.patch jetty9-9.4.50/debian/patches/CVE-2022-2048.patch --- jetty9-9.4.39/debian/patches/CVE-2022-2048.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2022-2048.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,207 +0,0 @@ -From: Markus Koschany -Date: Mon, 1 Aug 2022 20:22:54 +0200 -Subject: CVE-2022-2048 - -Origin: https://github.com/eclipse/jetty.project/issues/7935 ---- - .../jetty/http2/server/HttpChannelOverHTTP2.java | 12 +- - .../org/eclipse/jetty/http2/server/BadURITest.java | 154 +++++++++++++++++++++ - 2 files changed, 158 insertions(+), 8 deletions(-) - create mode 100644 jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/BadURITest.java - -diff --git a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java -index 08db7f1..fbed608 100644 ---- a/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java -+++ b/jetty-http2/http2-server/src/main/java/org/eclipse/jetty/http2/server/HttpChannelOverHTTP2.java -@@ -143,13 +143,11 @@ public class HttpChannelOverHTTP2 extends HttpChannel implements Closeable, Writ - } - catch (BadMessageException x) - { -- onBadMessage(x); -- return null; -+ return () -> onBadMessage(x); - } - catch (Throwable x) - { -- onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x)); -- return null; -+ return () -> onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x)); - } - } - -@@ -175,13 +173,11 @@ public class HttpChannelOverHTTP2 extends HttpChannel implements Closeable, Writ - } - catch (BadMessageException x) - { -- onBadMessage(x); -- return null; -+ return () -> onBadMessage(x); - } - catch (Throwable x) - { -- onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x)); -- return null; -+ return () -> onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x)); - } - } - -diff --git a/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/BadURITest.java b/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/BadURITest.java -new file mode 100644 -index 0000000..066ce67 ---- /dev/null -+++ b/jetty-http2/http2-server/src/test/java/org/eclipse/jetty/http2/server/BadURITest.java -@@ -0,0 +1,154 @@ -+// -+// ======================================================================== -+// Copyright (c) 1995-2022 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.http2.server; -+ -+import java.io.OutputStream; -+import java.net.Socket; -+import java.nio.ByteBuffer; -+import java.util.HashMap; -+import java.util.concurrent.CountDownLatch; -+import java.util.concurrent.TimeUnit; -+import javax.servlet.http.HttpServletRequest; -+import javax.servlet.http.HttpServletResponse; -+ -+import org.eclipse.jetty.http.HostPortHttpField; -+import org.eclipse.jetty.http.HttpFields; -+import org.eclipse.jetty.http.HttpMethod; -+import org.eclipse.jetty.http.HttpScheme; -+import org.eclipse.jetty.http.HttpVersion; -+import org.eclipse.jetty.http.MetaData; -+import org.eclipse.jetty.http2.frames.HeadersFrame; -+import org.eclipse.jetty.http2.frames.PrefaceFrame; -+import org.eclipse.jetty.http2.frames.SettingsFrame; -+import org.eclipse.jetty.http2.generator.Generator; -+import org.eclipse.jetty.io.ByteBufferPool; -+import org.eclipse.jetty.server.Handler; -+import org.eclipse.jetty.server.HttpConfiguration; -+import org.eclipse.jetty.server.Request; -+import org.eclipse.jetty.server.Server; -+import org.eclipse.jetty.server.ServerConnector; -+import org.eclipse.jetty.server.handler.AbstractHandler; -+import org.eclipse.jetty.server.handler.ErrorHandler; -+import org.eclipse.jetty.util.BufferUtil; -+import org.eclipse.jetty.util.component.LifeCycle; -+import org.junit.jupiter.api.AfterEach; -+import org.junit.jupiter.api.Test; -+ -+import static org.junit.jupiter.api.Assertions.assertTrue; -+ -+public class BadURITest -+{ -+ private Server server; -+ private ServerConnector connector; -+ -+ protected void startServer(Handler handler) throws Exception -+ { -+ server = new Server(); -+ connector = new ServerConnector(server, 1, 1, new HTTP2CServerConnectionFactory(new HttpConfiguration())); -+ server.addConnector(connector); -+ server.setHandler(handler); -+ server.start(); -+ } -+ -+ @AfterEach -+ public void dispose() -+ { -+ LifeCycle.stop(server); -+ } -+ -+ @Test -+ public void testBadURI() throws Exception -+ { -+ CountDownLatch handlerLatch = new CountDownLatch(1); -+ startServer(new AbstractHandler() -+ { -+ @Override -+ public void handle(String target, Request jettyRequest, HttpServletRequest request, HttpServletResponse response) -+ { -+ jettyRequest.setHandled(true); -+ handlerLatch.countDown(); -+ } -+ }); -+ -+ // Remove existing ErrorHandlers. -+ for (ErrorHandler errorHandler : server.getBeans(ErrorHandler.class)) -+ { -+ server.removeBean(errorHandler); -+ } -+ -+ server.addBean(new ErrorHandler() -+ { -+ @Override -+ public ByteBuffer badMessageError(int status, String reason, HttpFields fields) -+ { -+ // Return a very large buffer that will cause HTTP/2 flow control exhaustion and/or TCP congestion. -+ return ByteBuffer.allocateDirect(128 * 1024 * 1024); -+ } -+ }); -+ -+ ByteBufferPool byteBufferPool = connector.getByteBufferPool(); -+ Generator generator = new Generator(byteBufferPool); -+ -+ // Craft a request with a bad URI, it will not hit the Handler. -+ MetaData.Request metaData1 = new MetaData.Request( -+ HttpMethod.GET.asString(), -+ HttpScheme.HTTP.asString(), -+ new HostPortHttpField("localhost:" + connector.getLocalPort()), -+ // Use an ambiguous path parameter so that the URI is invalid. -+ "/foo/..;/bar", -+ HttpVersion.HTTP_2, -+ new HttpFields(), -+ -1 -+ ); -+ ByteBufferPool.Lease lease = new ByteBufferPool.Lease(byteBufferPool); -+ generator.control(lease, new PrefaceFrame()); -+ generator.control(lease, new SettingsFrame(new HashMap<>(), false)); -+ generator.control(lease, new HeadersFrame(1, metaData1, null, true)); -+ -+ try (Socket client = new Socket("localhost", connector.getLocalPort())) -+ { -+ OutputStream output = client.getOutputStream(); -+ for (ByteBuffer buffer : lease.getByteBuffers()) -+ { -+ output.write(BufferUtil.toArray(buffer)); -+ } -+ -+ // Wait for the first request be processed on the server. -+ Thread.sleep(1000); -+ -+ // Send a second request and verify that it hits the Handler. -+ lease.recycle(); -+ MetaData.Request metaData2 = new MetaData.Request( -+ HttpMethod.GET.asString(), -+ HttpScheme.HTTP.asString(), -+ new HostPortHttpField("localhost:" + connector.getLocalPort()), -+ "/valid", -+ HttpVersion.HTTP_2, -+ new HttpFields(), -+ -1 -+ ); -+ generator.control(lease, new HeadersFrame(3, metaData2, null, true)); -+ for (ByteBuffer buffer : lease.getByteBuffers()) -+ { -+ output.write(BufferUtil.toArray(buffer)); -+ } -+ assertTrue(handlerLatch.await(5, TimeUnit.SECONDS)); -+ } -+ } -+} diff -Nru jetty9-9.4.39/debian/patches/CVE-2023-26048.patch jetty9-9.4.50/debian/patches/CVE-2023-26048.patch --- jetty9-9.4.39/debian/patches/CVE-2023-26048.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2023-26048.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,35 +1,35 @@ From: Markus Koschany -Date: Wed, 27 Sep 2023 17:45:03 +0200 +Date: Tue, 26 Sep 2023 18:15:11 +0200 Subject: CVE-2023-26048 Origin: https://github.com/eclipse/jetty.project/pull/9345 --- - .../jetty/http/MultiPartFormInputStream.java | 22 ++- + .../jetty/http/MultiPartFormInputStream.java | 24 +++- .../java/org/eclipse/jetty/server/MultiParts.java | 14 +- - .../java/org/eclipse/jetty/server/Request.java | 27 ++- - .../jetty/servlet/MultiPartServletTest.java | 195 ++++++++++++++++++++- - .../jetty/util/MultiPartInputStreamParser.java | 23 ++- - .../jetty/http/client/HttpClientStreamTest.java | 2 +- - .../eclipse/jetty/http/client/HttpClientTest.java | 2 +- - 7 files changed, 268 insertions(+), 17 deletions(-) + .../java/org/eclipse/jetty/server/Request.java | 27 +++- + .../jetty/servlet/MultiPartServletTest.java | 141 +++++++++++++++++++++ + .../jetty/util/MultiPartInputStreamParser.java | 23 +++- + 5 files changed, 219 insertions(+), 10 deletions(-) diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartFormInputStream.java b/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartFormInputStream.java -index a92c5a1..3420a9b 100644 +index 2253346..4f1811f 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartFormInputStream.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartFormInputStream.java -@@ -60,8 +60,11 @@ import org.eclipse.jetty.util.log.Logger; +@@ -61,9 +61,12 @@ import org.eclipse.jetty.util.log.Logger; public class MultiPartFormInputStream { private static final Logger LOG = Log.getLogger(MultiPartFormInputStream.class); + private static final int DEFAULT_MAX_FORM_KEYS = 1000; private static final MultiMap EMPTY_MAP = new MultiMap<>(Collections.emptyMap()); - private final MultiMap _parts; +- private final MultiMap _parts; + private final EnumSet _nonComplianceWarnings = EnumSet.noneOf(NonCompliance.class); ++ private final MultiMap _parts; + private final int _maxParts; + private int _numParts = 0; private InputStream _in; private MultipartConfigElement _config; private String _contentType; -@@ -323,18 +326,30 @@ public class MultiPartFormInputStream +@@ -350,18 +353,30 @@ public class MultiPartFormInputStream * @param contextTmpDir javax.servlet.context.tempdir */ public MultiPartFormInputStream(InputStream in, String contentType, MultipartConfigElement config, File contextTmpDir) @@ -62,7 +62,7 @@ if (in instanceof ServletInputStream) { if (((ServletInputStream)in).isFinished()) -@@ -721,6 +736,9 @@ public class MultiPartFormInputStream +@@ -752,6 +767,9 @@ public class MultiPartFormInputStream public void startPart() { reset(); @@ -73,10 +73,10 @@ @Override diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/MultiParts.java b/jetty-server/src/main/java/org/eclipse/jetty/server/MultiParts.java -index 33c7f6d..720cbf7 100644 +index 5bb283d..8ae73f7 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/MultiParts.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/MultiParts.java -@@ -57,7 +57,12 @@ public interface MultiParts extends Closeable +@@ -58,7 +58,12 @@ public interface MultiParts extends Closeable public MultiPartsHttpParser(InputStream in, String contentType, MultipartConfigElement config, File contextTmpDir, Request request) throws IOException { @@ -88,9 +88,9 @@ + { + _httpParser = new MultiPartFormInputStream(in, contentType, config, contextTmpDir, maxParts); _context = request.getContext(); + _request = request; } - -@@ -101,7 +106,12 @@ public interface MultiParts extends Closeable +@@ -123,7 +128,12 @@ public interface MultiParts extends Closeable public MultiPartsUtilParser(InputStream in, String contentType, MultipartConfigElement config, File contextTmpDir, Request request) throws IOException { @@ -105,10 +105,10 @@ _request = request; } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java -index bc89c02..4e0ccb0 100644 +index 4d66f75..2f60fb7 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java -@@ -2441,7 +2441,21 @@ public class Request implements HttpServletRequest +@@ -2431,7 +2431,21 @@ public class Request implements HttpServletRequest if (config == null) throw new IllegalStateException("No multipart config for servlet"); @@ -131,7 +131,7 @@ setAttribute(MULTIPARTS, _multiParts); Collection parts = _multiParts.getParts(); -@@ -2475,11 +2489,16 @@ public class Request implements HttpServletRequest +@@ -2465,11 +2479,16 @@ public class Request implements HttpServletRequest else defaultCharset = StandardCharsets.UTF_8; @@ -148,7 +148,7 @@ // Servlet Spec 3.0 pg 23, parts without filename must be put into params. String charset = null; if (p.getContentType() != null) -@@ -2504,7 +2523,7 @@ public class Request implements HttpServletRequest +@@ -2494,7 +2513,7 @@ public class Request implements HttpServletRequest return _multiParts.getParts(); } @@ -157,7 +157,7 @@ { MultiPartFormDataCompliance compliance = getHttpChannel().getHttpConfiguration().getMultipartFormDataCompliance(); if (LOG.isDebugEnabled()) -@@ -2514,12 +2533,12 @@ public class Request implements HttpServletRequest +@@ -2504,12 +2523,12 @@ public class Request implements HttpServletRequest { case RFC7578: return new MultiParts.MultiPartsHttpParser(getInputStream(), getContentType(), config, @@ -173,45 +173,17 @@ } diff --git a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/MultiPartServletTest.java b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/MultiPartServletTest.java -index 472ae8f..96d9eba 100644 +index b87e63c..e008921 100644 --- a/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/MultiPartServletTest.java +++ b/jetty-servlet/src/test/java/org/eclipse/jetty/servlet/MultiPartServletTest.java -@@ -1,6 +1,6 @@ - // - // ======================================================================== --// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. -+// Copyright (c) 1995-2022 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 -@@ -19,10 +19,15 @@ - package org.eclipse.jetty.servlet; - - import java.io.IOException; -+import java.io.InputStream; - import java.nio.file.Files; - import java.nio.file.Path; -+import java.util.ArrayList; - import java.util.Arrays; -+import java.util.List; -+import java.util.concurrent.TimeUnit; - import java.util.stream.Stream; -+import java.util.zip.GZIPInputStream; - import javax.servlet.MultipartConfigElement; - import javax.servlet.ServletException; - import javax.servlet.http.HttpServlet; -@@ -32,31 +37,45 @@ import javax.servlet.http.Part; - - import org.eclipse.jetty.client.HttpClient; - import org.eclipse.jetty.client.api.ContentResponse; -+import org.eclipse.jetty.client.api.Response; +@@ -41,13 +41,16 @@ import org.eclipse.jetty.client.api.Response; import org.eclipse.jetty.client.util.BytesContentProvider; -+import org.eclipse.jetty.client.util.InputStreamResponseListener; + import org.eclipse.jetty.client.util.InputStreamResponseListener; import org.eclipse.jetty.client.util.MultiPartContentProvider; +import org.eclipse.jetty.client.util.OutputStreamContentProvider; -+import org.eclipse.jetty.client.util.StringContentProvider; -+import org.eclipse.jetty.http.HttpFields; -+import org.eclipse.jetty.http.HttpHeader; + import org.eclipse.jetty.client.util.StringContentProvider; + import org.eclipse.jetty.http.HttpFields; + import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpScheme; +import org.eclipse.jetty.http.HttpStatus; @@ -221,32 +193,16 @@ import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.MultiPartFormDataCompliance; - import org.eclipse.jetty.server.Server; - import org.eclipse.jetty.server.ServerConnector; -+import org.eclipse.jetty.server.handler.gzip.GzipHandler; - import org.eclipse.jetty.util.IO; - import org.eclipse.jetty.util.log.Log; - import org.eclipse.jetty.util.log.Logger; - import org.eclipse.jetty.util.log.StacklessLogging; - import org.junit.jupiter.api.AfterEach; - import org.junit.jupiter.api.BeforeEach; -+import org.junit.jupiter.api.Test; - import org.junit.jupiter.params.ParameterizedTest; - import org.junit.jupiter.params.provider.Arguments; - import org.junit.jupiter.params.provider.MethodSource; +@@ -67,6 +70,8 @@ import org.junit.jupiter.params.provider.MethodSource; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; -+import static org.hamcrest.Matchers.startsWith; + import static org.hamcrest.Matchers.startsWith; import static org.junit.jupiter.api.Assertions.assertEquals; -+import static org.junit.jupiter.api.Assertions.assertNotNull; - - public class MultiPartServletTest - { -@@ -68,6 +87,7 @@ public class MultiPartServletTest +@@ -82,6 +87,7 @@ public class MultiPartServletTest private Path tmpDir; private static final int MAX_FILE_SIZE = 512 * 1024; @@ -254,7 +210,7 @@ private static final int LARGE_MESSAGE_SIZE = 1024 * 1024; public static Stream data() -@@ -75,6 +95,19 @@ public class MultiPartServletTest +@@ -89,6 +95,19 @@ public class MultiPartServletTest return Arrays.asList(MultiPartFormDataCompliance.values()).stream().map(Arguments::of); } @@ -274,75 +230,35 @@ public static class MultiPartServlet extends HttpServlet { @Override -@@ -96,29 +129,63 @@ public class MultiPartServletTest - } - } - -+ public static class MultiPartEchoServlet extends HttpServlet -+ { -+ @Override -+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException -+ { -+ if (!req.getContentType().contains(MimeTypes.Type.MULTIPART_FORM_DATA.asString())) -+ { -+ resp.sendError(400); -+ return; -+ } -+ -+ resp.setContentType(req.getContentType()); -+ IO.copy(req.getInputStream(), resp.getOutputStream()); -+ } -+ } -+ - @BeforeEach +@@ -130,6 +149,7 @@ public class MultiPartServletTest public void start() throws Exception { tmpDir = Files.createTempDirectory(MultiPartServletTest.class.getSimpleName()); + Files.deleteIfExists(tmpDir); -+ assertNotNull(tmpDir); + assertNotNull(tmpDir); server = new Server(); - connector = new ServerConnector(server); - server.addConnector(connector); +@@ -138,11 +158,19 @@ public class MultiPartServletTest -+ MultipartConfigElement config = new MultipartConfigElement(tmpDir.toAbsolutePath().toString(), -+ MAX_FILE_SIZE, -1, 1); + MultipartConfigElement config = new MultipartConfigElement(tmpDir.toAbsolutePath().toString(), + MAX_FILE_SIZE, -1, 1); + MultipartConfigElement requestSizedConfig = new MultipartConfigElement(tmpDir.toAbsolutePath().toString(), + -1, MAX_REQUEST_SIZE, 1); + MultipartConfigElement defaultConfig = new MultipartConfigElement(tmpDir.toAbsolutePath().toString(), + -1, -1, 1); -+ + ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); contextHandler.setContextPath("/"); ServletHolder servletHolder = contextHandler.addServlet(MultiPartServlet.class, "/"); -- -- MultipartConfigElement config = new MultipartConfigElement(tmpDir.toAbsolutePath().toString(), -- MAX_FILE_SIZE, -1, 1); -+ servletHolder.getRegistration().setMultipartConfig(config); + servletHolder.getRegistration().setMultipartConfig(config); + servletHolder = contextHandler.addServlet(RequestParameterServlet.class, "/defaultConfig"); + servletHolder.getRegistration().setMultipartConfig(defaultConfig); + servletHolder = contextHandler.addServlet(RequestParameterServlet.class, "/requestSizeLimit"); + servletHolder.getRegistration().setMultipartConfig(requestSizedConfig); -+ servletHolder = contextHandler.addServlet(MultiPartEchoServlet.class, "/echo"); + servletHolder = contextHandler.addServlet(MultiPartEchoServlet.class, "/echo"); servletHolder.getRegistration().setMultipartConfig(config); -- server.setHandler(contextHandler); -+ GzipHandler gzipHandler = new GzipHandler(); -+ gzipHandler.addIncludedMethods(HttpMethod.POST.asString()); -+ gzipHandler.addIncludedMimeTypes("multipart/form-data"); -+ gzipHandler.setMinGzipSize(32); -+ gzipHandler.setHandler(contextHandler); -+ server.setHandler(gzipHandler); - - server.start(); - - client = new HttpClient(); - client.start(); -+ client.getContentDecoderFactories().clear(); - } - - @AfterEach -@@ -130,6 +197,119 @@ public class MultiPartServletTest +@@ -169,6 +197,119 @@ public class MultiPartServletTest IO.delete(tmpDir.toFile()); } @@ -462,19 +378,8 @@ @ParameterizedTest @MethodSource("data") public void testTempFilesDeletedOnError(MultiPartFormDataCompliance compliance) throws Exception -@@ -161,6 +341,9 @@ public class MultiPartServletTest - containsString("Multipart Mime part largePart exceeds max filesize")); - } - -- assertThat(tmpDir.toFile().list().length, is(0)); -+ String[] fileList = tmpDir.toFile().list(); -+ assertNotNull(fileList); -+ assertThat(fileList.length, is(0)); - } -+ - } diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java -index cb4017d..6dedd7c 100644 +index bb24248..359af1c 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartInputStreamParser.java @@ -64,8 +64,11 @@ import org.eclipse.jetty.util.log.Logger; @@ -526,27 +431,3 @@ //Have a new Part MultiPart part = new MultiPart(name, filename); part.setHeaders(headers); -diff --git a/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java b/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java -index 4e38e0e..7da042f 100644 ---- a/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java -+++ b/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientStreamTest.java -@@ -1,6 +1,6 @@ - // - // ======================================================================== --// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. -+// Copyright (c) 1995-2022 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 -diff --git a/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientTest.java b/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientTest.java -index 407054f..91c8379 100644 ---- a/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientTest.java -+++ b/tests/test-http-client-transport/src/test/java/org/eclipse/jetty/http/client/HttpClientTest.java -@@ -1,6 +1,6 @@ - // - // ======================================================================== --// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. -+// Copyright (c) 1995-2022 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 diff -Nru jetty9-9.4.39/debian/patches/CVE-2023-26049.patch jetty9-9.4.50/debian/patches/CVE-2023-26049.patch --- jetty9-9.4.39/debian/patches/CVE-2023-26049.patch 2023-09-27 16:12:02.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2023-26049.patch 2023-10-29 15:12:42.000000000 +0000 @@ -1,5 +1,5 @@ From: Markus Koschany -Date: Wed, 27 Sep 2023 17:52:07 +0200 +Date: Tue, 26 Sep 2023 18:35:45 +0200 Subject: CVE-2023-26049 Origin: https://github.com/eclipse/jetty.project/pull/9352 @@ -12,7 +12,7 @@ 5 files changed, 157 insertions(+), 41 deletions(-) diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCompliance.java b/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCompliance.java -index b6b640b..734b029 100644 +index f8696d4..40853a6 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCompliance.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCompliance.java @@ -24,5 +24,6 @@ package org.eclipse.jetty.http; @@ -23,7 +23,7 @@ RFC2965 } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/CookieCutter.java b/jetty-server/src/main/java/org/eclipse/jetty/server/CookieCutter.java -index 6d72c3e..c9678b9 100644 +index 3753a82..60a9f52 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/CookieCutter.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/CookieCutter.java @@ -154,6 +154,13 @@ public class CookieCutter @@ -196,7 +196,7 @@ } } diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterLenientTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterLenientTest.java -index 516ab98..af7237e 100644 +index 3eceac6..1d06c82 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterLenientTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterLenientTest.java @@ -21,6 +21,7 @@ package org.eclipse.jetty.server; @@ -217,7 +217,7 @@ Cookie[] cookies = cutter.getCookies(); if (expectedName == null) diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterTest.java -index 4ba3db1..9d18276 100644 +index 494ff03..3e84ce6 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCutterTest.java @@ -19,10 +19,13 @@ @@ -346,18 +346,18 @@ + } } diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java -index f33bbce..80cd7b0 100644 +index f77f39b..a4e9125 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java -@@ -48,6 +48,7 @@ import javax.servlet.http.HttpServletResponse; +@@ -53,6 +53,7 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import org.eclipse.jetty.http.BadMessageException; +import org.eclipse.jetty.http.CookieCompliance; import org.eclipse.jetty.http.HttpCompliance; import org.eclipse.jetty.http.HttpComplianceSection; - import org.eclipse.jetty.http.HttpTester; -@@ -106,6 +107,7 @@ public class RequestTest + import org.eclipse.jetty.http.HttpStatus; +@@ -140,6 +141,7 @@ public class RequestTest http.getHttpConfiguration().setRequestHeaderSize(512); http.getHttpConfiguration().setResponseHeaderSize(512); http.getHttpConfiguration().setOutputBufferSize(2048); diff -Nru jetty9-9.4.39/debian/patches/CVE-2023-36478.patch jetty9-9.4.50/debian/patches/CVE-2023-36478.patch --- jetty9-9.4.39/debian/patches/CVE-2023-36478.patch 1970-01-01 00:00:00.000000000 +0000 +++ jetty9-9.4.50/debian/patches/CVE-2023-36478.patch 2023-10-29 15:12:42.000000000 +0000 @@ -0,0 +1,7110 @@ +From: Markus Koschany +Date: Thu, 26 Oct 2023 20:28:28 +0200 +Subject: CVE-2023-36478 + +Origin: https://github.com/jetty/jetty.project/commit/a4d61e9eb026ec98c79107e840cabdf520482c56 +Origin: https://github.com/jetty/jetty.project/commit/bbeb66bbc0c79afa52d5454e27265640898fab16 +--- + .../java/org/eclipse/jetty/http/HttpTokens.java | 44 ++ + .../jetty/http/compression/EncodingException.java | 27 + + .../eclipse/jetty/http/compression/Huffman.java | 357 +++++++++++++ + .../jetty/http/compression/HuffmanDecoder.java | 143 ++++++ + .../jetty/http/compression/HuffmanEncoder.java | 142 ++++++ + .../jetty/http/compression/NBitIntegerDecoder.java | 113 +++++ + .../jetty/http/compression/NBitIntegerEncoder.java | 96 ++++ + .../jetty/http/compression/NBitStringDecoder.java | 138 ++++++ + .../jetty/http/compression/NBitStringEncoder.java | 82 +++ + .../java/org/eclipse/jetty/http/HuffmanTest.java | 168 +++++++ + .../org/eclipse/jetty/http/NBitIntegerTest.java | 207 ++++++++ + .../eclipse/jetty/http2/client/HTTP2Client.java | 81 ++- + .../http2/client/HTTP2ClientConnectionFactory.java | 83 +++- + .../jetty/http2/client/HTTP2ClientSession.java | 10 +- + .../org/eclipse/jetty/http2/client/HTTP2Test.java | 173 ++++++- + .../eclipse/jetty/http2/client/PrefaceTest.java | 13 +- + .../org/eclipse/jetty/http2/HTTP2Connection.java | 22 +- + .../java/org/eclipse/jetty/http2/HTTP2Session.java | 135 +++-- + .../eclipse/jetty/http2/generator/Generator.java | 26 +- + .../jetty/http2/parser/HeaderBlockParser.java | 5 + + .../jetty/http2/parser/HeadersBodyParser.java | 4 + + .../org/eclipse/jetty/http2/parser/Parser.java | 58 ++- + .../jetty/http2/parser/PushPromiseBodyParser.java | 4 + + .../eclipse/jetty/http2/parser/ServerParser.java | 39 +- + .../jetty/http2/frames/ContinuationParseTest.java | 7 +- + .../jetty/http2/frames/DataGenerateParseTest.java | 13 +- + .../eclipse/jetty/http2/frames/FrameFloodTest.java | 7 +- + .../http2/frames/GoAwayGenerateParseTest.java | 13 +- + .../http2/frames/HeadersGenerateParseTest.java | 13 +- + .../jetty/http2/frames/MaxFrameSizeParseTest.java | 9 +- + .../jetty/http2/frames/PingGenerateParseTest.java | 19 +- + .../http2/frames/PriorityGenerateParseTest.java | 13 +- + .../http2/frames/PushPromiseGenerateParseTest.java | 13 +- + .../jetty/http2/frames/ResetGenerateParseTest.java | 13 +- + .../http2/frames/SettingsGenerateParseTest.java | 45 +- + .../jetty/http2/frames/UnknownParseTest.java | 13 +- + .../frames/WindowUpdateGenerateParseTest.java | 13 +- + .../eclipse/jetty/http2/hpack/HpackContext.java | 61 +-- + .../eclipse/jetty/http2/hpack/HpackDecoder.java | 174 +++++-- + .../eclipse/jetty/http2/hpack/HpackEncoder.java | 174 +++---- + .../eclipse/jetty/http2/hpack/HpackException.java | 5 +- + .../jetty/http2/hpack/HpackFieldPreEncoder.java | 14 +- + .../org/eclipse/jetty/http2/hpack/Huffman.java | 551 --------------------- + .../eclipse/jetty/http2/hpack/MetaDataBuilder.java | 42 +- + .../org/eclipse/jetty/http2/hpack/NBitInteger.java | 151 ------ + .../jetty/http2/hpack/HpackContextTest.java | 33 +- + .../jetty/http2/hpack/HpackDecoderTest.java | 50 +- + .../jetty/http2/hpack/HpackEncoderTest.java | 30 +- + .../eclipse/jetty/http2/hpack/HpackPerfTest.java | 29 +- + .../org/eclipse/jetty/http2/hpack/HpackTest.java | 49 +- + .../org/eclipse/jetty/http2/hpack/HuffmanTest.java | 87 ---- + .../eclipse/jetty/http2/hpack/NBitIntegerTest.java | 204 -------- + .../http/HttpClientTransportOverHTTP2Test.java | 8 +- + .../AbstractHTTP2ServerConnectionFactory.java | 85 +++- + .../jetty/http2/server/HTTP2ServerConnection.java | 8 +- + .../jetty/http2/server/HTTP2ServerSession.java | 10 +- + .../org/eclipse/jetty/http2/server/CloseTest.java | 19 +- + .../jetty/http2/server/HTTP2CServerTest.java | 13 +- + .../jetty/http2/server/HTTP2ServerTest.java | 45 +- + .../eclipse/jetty/util/CharsetStringBuilder.java | 312 ++++++++++++ + .../java/org/eclipse/jetty/util/StringUtil.java | 73 +++ + 61 files changed, 3044 insertions(+), 1544 deletions(-) + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/EncodingException.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/Huffman.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanDecoder.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanEncoder.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerDecoder.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerEncoder.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringDecoder.java + create mode 100644 jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringEncoder.java + create mode 100644 jetty-http/src/test/java/org/eclipse/jetty/http/HuffmanTest.java + create mode 100644 jetty-http/src/test/java/org/eclipse/jetty/http/NBitIntegerTest.java + delete mode 100644 jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java + delete mode 100644 jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/NBitInteger.java + delete mode 100644 jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java + delete mode 100644 jetty-http2/http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/NBitIntegerTest.java + create mode 100644 jetty-util/src/main/java/org/eclipse/jetty/util/CharsetStringBuilder.java + +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java +index 8aebd00..720faf4 100644 +--- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java +@@ -188,5 +188,49 @@ public class HttpTokens + } + } + } ++ ++ /** ++ * This is used when decoding to not decode illegal characters based on RFC9110. ++ * CR, LF, or NUL are replaced with ' ', all other control and multibyte characters ++ * are replaced with '?'. If this is given a legal character the same value will be returned. ++ *
++     * field-vchar = VCHAR / obs-text
++     * obs-text    = %x80-FF
++     * VCHAR       = %x21-7E
++     * 
++ * @param c the character to test. ++ * @return the original character or the replacement character ' ' or '?', ++ * the return value is guaranteed to be a valid ISO-8859-1 character. ++ */ ++ public static char sanitizeFieldVchar(char c) ++ { ++ switch (c) ++ { ++ // A recipient of CR, LF, or NUL within a field value MUST either reject the message ++ // or replace each of those characters with SP before further processing ++ case '\r': ++ case '\n': ++ case 0x00: ++ return ' '; ++ ++ default: ++ if (isIllegalFieldVchar(c)) ++ return '?'; ++ } ++ return c; ++ } ++ ++ /** ++ * Checks whether this is an invalid VCHAR based on RFC9110. ++ * If this not a valid ISO-8859-1 character or a control character ++ * we say that it is illegal. ++ * ++ * @param c the character to test. ++ * @return true if this is invalid VCHAR. ++ */ ++ public static boolean isIllegalFieldVchar(char c) ++ { ++ return (c >= 256 || c < ' '); ++ } + } + +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/EncodingException.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/EncodingException.java +new file mode 100644 +index 0000000..5f05557 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/EncodingException.java +@@ -0,0 +1,27 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++public class EncodingException extends Exception ++{ ++ public EncodingException(String message) ++ { ++ super(message); ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/Huffman.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/Huffman.java +new file mode 100644 +index 0000000..6e2cb33 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/Huffman.java +@@ -0,0 +1,357 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++/** ++ * This class contains the Huffman Codes defined in RFC7541. ++ */ ++public class Huffman ++{ ++ private Huffman() ++ { ++ } ++ ++ // Appendix C: Huffman Codes ++ // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#appendix-C ++ static final int[][] CODES = ++ { ++ /* ( 0) |11111111|11000 */ {0x1ff8, 13}, ++ /* ( 1) |11111111|11111111|1011000 */ {0x7fffd8, 23}, ++ /* ( 2) |11111111|11111111|11111110|0010 */ {0xfffffe2, 28}, ++ /* ( 3) |11111111|11111111|11111110|0011 */ {0xfffffe3, 28}, ++ /* ( 4) |11111111|11111111|11111110|0100 */ {0xfffffe4, 28}, ++ /* ( 5) |11111111|11111111|11111110|0101 */ {0xfffffe5, 28}, ++ /* ( 6) |11111111|11111111|11111110|0110 */ {0xfffffe6, 28}, ++ /* ( 7) |11111111|11111111|11111110|0111 */ {0xfffffe7, 28}, ++ /* ( 8) |11111111|11111111|11111110|1000 */ {0xfffffe8, 28}, ++ /* ( 9) |11111111|11111111|11101010 */ {0xffffea, 24}, ++ /* ( 10) |11111111|11111111|11111111|111100 */ {0x3ffffffc, 30}, ++ /* ( 11) |11111111|11111111|11111110|1001 */ {0xfffffe9, 28}, ++ /* ( 12) |11111111|11111111|11111110|1010 */ {0xfffffea, 28}, ++ /* ( 13) |11111111|11111111|11111111|111101 */ {0x3ffffffd, 30}, ++ /* ( 14) |11111111|11111111|11111110|1011 */ {0xfffffeb, 28}, ++ /* ( 15) |11111111|11111111|11111110|1100 */ {0xfffffec, 28}, ++ /* ( 16) |11111111|11111111|11111110|1101 */ {0xfffffed, 28}, ++ /* ( 17) |11111111|11111111|11111110|1110 */ {0xfffffee, 28}, ++ /* ( 18) |11111111|11111111|11111110|1111 */ {0xfffffef, 28}, ++ /* ( 19) |11111111|11111111|11111111|0000 */ {0xffffff0, 28}, ++ /* ( 20) |11111111|11111111|11111111|0001 */ {0xffffff1, 28}, ++ /* ( 21) |11111111|11111111|11111111|0010 */ {0xffffff2, 28}, ++ /* ( 22) |11111111|11111111|11111111|111110 */ {0x3ffffffe, 30}, ++ /* ( 23) |11111111|11111111|11111111|0011 */ {0xffffff3, 28}, ++ /* ( 24) |11111111|11111111|11111111|0100 */ {0xffffff4, 28}, ++ /* ( 25) |11111111|11111111|11111111|0101 */ {0xffffff5, 28}, ++ /* ( 26) |11111111|11111111|11111111|0110 */ {0xffffff6, 28}, ++ /* ( 27) |11111111|11111111|11111111|0111 */ {0xffffff7, 28}, ++ /* ( 28) |11111111|11111111|11111111|1000 */ {0xffffff8, 28}, ++ /* ( 29) |11111111|11111111|11111111|1001 */ {0xffffff9, 28}, ++ /* ( 30) |11111111|11111111|11111111|1010 */ {0xffffffa, 28}, ++ /* ( 31) |11111111|11111111|11111111|1011 */ {0xffffffb, 28}, ++ /*' ' ( 32) |010100 */ {0x14, 6}, ++ /*'!' ( 33) |11111110|00 */ {0x3f8, 10}, ++ /*'"' ( 34) |11111110|01 */ {0x3f9, 10}, ++ /*'#' ( 35) |11111111|1010 */ {0xffa, 12}, ++ /*'$' ( 36) |11111111|11001 */ {0x1ff9, 13}, ++ /*'%' ( 37) |010101 */ {0x15, 6}, ++ /*'&' ( 38) |11111000 */ {0xf8, 8}, ++ /*''' ( 39) |11111111|010 */ {0x7fa, 11}, ++ /*'(' ( 40) |11111110|10 */ {0x3fa, 10}, ++ /*')' ( 41) |11111110|11 */ {0x3fb, 10}, ++ /*'*' ( 42) |11111001 */ {0xf9, 8}, ++ /*'+' ( 43) |11111111|011 */ {0x7fb, 11}, ++ /*',' ( 44) |11111010 */ {0xfa, 8}, ++ /*'-' ( 45) |010110 */ {0x16, 6}, ++ /*'.' ( 46) |010111 */ {0x17, 6}, ++ /*'/' ( 47) |011000 */ {0x18, 6}, ++ /*'0' ( 48) |00000 */ {0x0, 5}, ++ /*'1' ( 49) |00001 */ {0x1, 5}, ++ /*'2' ( 50) |00010 */ {0x2, 5}, ++ /*'3' ( 51) |011001 */ {0x19, 6}, ++ /*'4' ( 52) |011010 */ {0x1a, 6}, ++ /*'5' ( 53) |011011 */ {0x1b, 6}, ++ /*'6' ( 54) |011100 */ {0x1c, 6}, ++ /*'7' ( 55) |011101 */ {0x1d, 6}, ++ /*'8' ( 56) |011110 */ {0x1e, 6}, ++ /*'9' ( 57) |011111 */ {0x1f, 6}, ++ /*':' ( 58) |1011100 */ {0x5c, 7}, ++ /*';' ( 59) |11111011 */ {0xfb, 8}, ++ /*'<' ( 60) |11111111|1111100 */ {0x7ffc, 15}, ++ /*'=' ( 61) |100000 */ {0x20, 6}, ++ /*'>' ( 62) |11111111|1011 */ {0xffb, 12}, ++ /*'?' ( 63) |11111111|00 */ {0x3fc, 10}, ++ /*'@' ( 64) |11111111|11010 */ {0x1ffa, 13}, ++ /*'A' ( 65) |100001 */ {0x21, 6}, ++ /*'B' ( 66) |1011101 */ {0x5d, 7}, ++ /*'C' ( 67) |1011110 */ {0x5e, 7}, ++ /*'D' ( 68) |1011111 */ {0x5f, 7}, ++ /*'E' ( 69) |1100000 */ {0x60, 7}, ++ /*'F' ( 70) |1100001 */ {0x61, 7}, ++ /*'G' ( 71) |1100010 */ {0x62, 7}, ++ /*'H' ( 72) |1100011 */ {0x63, 7}, ++ /*'I' ( 73) |1100100 */ {0x64, 7}, ++ /*'J' ( 74) |1100101 */ {0x65, 7}, ++ /*'K' ( 75) |1100110 */ {0x66, 7}, ++ /*'L' ( 76) |1100111 */ {0x67, 7}, ++ /*'M' ( 77) |1101000 */ {0x68, 7}, ++ /*'N' ( 78) |1101001 */ {0x69, 7}, ++ /*'O' ( 79) |1101010 */ {0x6a, 7}, ++ /*'P' ( 80) |1101011 */ {0x6b, 7}, ++ /*'Q' ( 81) |1101100 */ {0x6c, 7}, ++ /*'R' ( 82) |1101101 */ {0x6d, 7}, ++ /*'S' ( 83) |1101110 */ {0x6e, 7}, ++ /*'T' ( 84) |1101111 */ {0x6f, 7}, ++ /*'U' ( 85) |1110000 */ {0x70, 7}, ++ /*'V' ( 86) |1110001 */ {0x71, 7}, ++ /*'W' ( 87) |1110010 */ {0x72, 7}, ++ /*'X' ( 88) |11111100 */ {0xfc, 8}, ++ /*'Y' ( 89) |1110011 */ {0x73, 7}, ++ /*'Z' ( 90) |11111101 */ {0xfd, 8}, ++ /*'[' ( 91) |11111111|11011 */ {0x1ffb, 13}, ++ /*'\' ( 92) |11111111|11111110|000 */ {0x7fff0, 19}, ++ /*']' ( 93) |11111111|11100 */ {0x1ffc, 13}, ++ /*'^' ( 94) |11111111|111100 */ {0x3ffc, 14}, ++ /*'_' ( 95) |100010 */ {0x22, 6}, ++ /*'`' ( 96) |11111111|1111101 */ {0x7ffd, 15}, ++ /*'a' ( 97) |00011 */ {0x3, 5}, ++ /*'b' ( 98) |100011 */ {0x23, 6}, ++ /*'c' ( 99) |00100 */ {0x4, 5}, ++ /*'d' (100) |100100 */ {0x24, 6}, ++ /*'e' (101) |00101 */ {0x5, 5}, ++ /*'f' (102) |100101 */ {0x25, 6}, ++ /*'g' (103) |100110 */ {0x26, 6}, ++ /*'h' (104) |100111 */ {0x27, 6}, ++ /*'i' (105) |00110 */ {0x6, 5}, ++ /*'j' (106) |1110100 */ {0x74, 7}, ++ /*'k' (107) |1110101 */ {0x75, 7}, ++ /*'l' (108) |101000 */ {0x28, 6}, ++ /*'m' (109) |101001 */ {0x29, 6}, ++ /*'n' (110) |101010 */ {0x2a, 6}, ++ /*'o' (111) |00111 */ {0x7, 5}, ++ /*'p' (112) |101011 */ {0x2b, 6}, ++ /*'q' (113) |1110110 */ {0x76, 7}, ++ /*'r' (114) |101100 */ {0x2c, 6}, ++ /*'s' (115) |01000 */ {0x8, 5}, ++ /*'t' (116) |01001 */ {0x9, 5}, ++ /*'u' (117) |101101 */ {0x2d, 6}, ++ /*'v' (118) |1110111 */ {0x77, 7}, ++ /*'w' (119) |1111000 */ {0x78, 7}, ++ /*'x' (120) |1111001 */ {0x79, 7}, ++ /*'y' (121) |1111010 */ {0x7a, 7}, ++ /*'z' (122) |1111011 */ {0x7b, 7}, ++ /*'{' (123) |11111111|1111110 */ {0x7ffe, 15}, ++ /*'|' (124) |11111111|100 */ {0x7fc, 11}, ++ /*'}' (125) |11111111|111101 */ {0x3ffd, 14}, ++ /*'~' (126) |11111111|11101 */ {0x1ffd, 13}, ++ /* (127) |11111111|11111111|11111111|1100 */ {0xffffffc, 28}, ++ /* (128) |11111111|11111110|0110 */ {0xfffe6, 20}, ++ /* (129) |11111111|11111111|010010 */ {0x3fffd2, 22}, ++ /* (130) |11111111|11111110|0111 */ {0xfffe7, 20}, ++ /* (131) |11111111|11111110|1000 */ {0xfffe8, 20}, ++ /* (132) |11111111|11111111|010011 */ {0x3fffd3, 22}, ++ /* (133) |11111111|11111111|010100 */ {0x3fffd4, 22}, ++ /* (134) |11111111|11111111|010101 */ {0x3fffd5, 22}, ++ /* (135) |11111111|11111111|1011001 */ {0x7fffd9, 23}, ++ /* (136) |11111111|11111111|010110 */ {0x3fffd6, 22}, ++ /* (137) |11111111|11111111|1011010 */ {0x7fffda, 23}, ++ /* (138) |11111111|11111111|1011011 */ {0x7fffdb, 23}, ++ /* (139) |11111111|11111111|1011100 */ {0x7fffdc, 23}, ++ /* (140) |11111111|11111111|1011101 */ {0x7fffdd, 23}, ++ /* (141) |11111111|11111111|1011110 */ {0x7fffde, 23}, ++ /* (142) |11111111|11111111|11101011 */ {0xffffeb, 24}, ++ /* (143) |11111111|11111111|1011111 */ {0x7fffdf, 23}, ++ /* (144) |11111111|11111111|11101100 */ {0xffffec, 24}, ++ /* (145) |11111111|11111111|11101101 */ {0xffffed, 24}, ++ /* (146) |11111111|11111111|010111 */ {0x3fffd7, 22}, ++ /* (147) |11111111|11111111|1100000 */ {0x7fffe0, 23}, ++ /* (148) |11111111|11111111|11101110 */ {0xffffee, 24}, ++ /* (149) |11111111|11111111|1100001 */ {0x7fffe1, 23}, ++ /* (150) |11111111|11111111|1100010 */ {0x7fffe2, 23}, ++ /* (151) |11111111|11111111|1100011 */ {0x7fffe3, 23}, ++ /* (152) |11111111|11111111|1100100 */ {0x7fffe4, 23}, ++ /* (153) |11111111|11111110|11100 */ {0x1fffdc, 21}, ++ /* (154) |11111111|11111111|011000 */ {0x3fffd8, 22}, ++ /* (155) |11111111|11111111|1100101 */ {0x7fffe5, 23}, ++ /* (156) |11111111|11111111|011001 */ {0x3fffd9, 22}, ++ /* (157) |11111111|11111111|1100110 */ {0x7fffe6, 23}, ++ /* (158) |11111111|11111111|1100111 */ {0x7fffe7, 23}, ++ /* (159) |11111111|11111111|11101111 */ {0xffffef, 24}, ++ /* (160) |11111111|11111111|011010 */ {0x3fffda, 22}, ++ /* (161) |11111111|11111110|11101 */ {0x1fffdd, 21}, ++ /* (162) |11111111|11111110|1001 */ {0xfffe9, 20}, ++ /* (163) |11111111|11111111|011011 */ {0x3fffdb, 22}, ++ /* (164) |11111111|11111111|011100 */ {0x3fffdc, 22}, ++ /* (165) |11111111|11111111|1101000 */ {0x7fffe8, 23}, ++ /* (166) |11111111|11111111|1101001 */ {0x7fffe9, 23}, ++ /* (167) |11111111|11111110|11110 */ {0x1fffde, 21}, ++ /* (168) |11111111|11111111|1101010 */ {0x7fffea, 23}, ++ /* (169) |11111111|11111111|011101 */ {0x3fffdd, 22}, ++ /* (170) |11111111|11111111|011110 */ {0x3fffde, 22}, ++ /* (171) |11111111|11111111|11110000 */ {0xfffff0, 24}, ++ /* (172) |11111111|11111110|11111 */ {0x1fffdf, 21}, ++ /* (173) |11111111|11111111|011111 */ {0x3fffdf, 22}, ++ /* (174) |11111111|11111111|1101011 */ {0x7fffeb, 23}, ++ /* (175) |11111111|11111111|1101100 */ {0x7fffec, 23}, ++ /* (176) |11111111|11111111|00000 */ {0x1fffe0, 21}, ++ /* (177) |11111111|11111111|00001 */ {0x1fffe1, 21}, ++ /* (178) |11111111|11111111|100000 */ {0x3fffe0, 22}, ++ /* (179) |11111111|11111111|00010 */ {0x1fffe2, 21}, ++ /* (180) |11111111|11111111|1101101 */ {0x7fffed, 23}, ++ /* (181) |11111111|11111111|100001 */ {0x3fffe1, 22}, ++ /* (182) |11111111|11111111|1101110 */ {0x7fffee, 23}, ++ /* (183) |11111111|11111111|1101111 */ {0x7fffef, 23}, ++ /* (184) |11111111|11111110|1010 */ {0xfffea, 20}, ++ /* (185) |11111111|11111111|100010 */ {0x3fffe2, 22}, ++ /* (186) |11111111|11111111|100011 */ {0x3fffe3, 22}, ++ /* (187) |11111111|11111111|100100 */ {0x3fffe4, 22}, ++ /* (188) |11111111|11111111|1110000 */ {0x7ffff0, 23}, ++ /* (189) |11111111|11111111|100101 */ {0x3fffe5, 22}, ++ /* (190) |11111111|11111111|100110 */ {0x3fffe6, 22}, ++ /* (191) |11111111|11111111|1110001 */ {0x7ffff1, 23}, ++ /* (192) |11111111|11111111|11111000|00 */ {0x3ffffe0, 26}, ++ /* (193) |11111111|11111111|11111000|01 */ {0x3ffffe1, 26}, ++ /* (194) |11111111|11111110|1011 */ {0xfffeb, 20}, ++ /* (195) |11111111|11111110|001 */ {0x7fff1, 19}, ++ /* (196) |11111111|11111111|100111 */ {0x3fffe7, 22}, ++ /* (197) |11111111|11111111|1110010 */ {0x7ffff2, 23}, ++ /* (198) |11111111|11111111|101000 */ {0x3fffe8, 22}, ++ /* (199) |11111111|11111111|11110110|0 */ {0x1ffffec, 25}, ++ /* (200) |11111111|11111111|11111000|10 */ {0x3ffffe2, 26}, ++ /* (201) |11111111|11111111|11111000|11 */ {0x3ffffe3, 26}, ++ /* (202) |11111111|11111111|11111001|00 */ {0x3ffffe4, 26}, ++ /* (203) |11111111|11111111|11111011|110 */ {0x7ffffde, 27}, ++ /* (204) |11111111|11111111|11111011|111 */ {0x7ffffdf, 27}, ++ /* (205) |11111111|11111111|11111001|01 */ {0x3ffffe5, 26}, ++ /* (206) |11111111|11111111|11110001 */ {0xfffff1, 24}, ++ /* (207) |11111111|11111111|11110110|1 */ {0x1ffffed, 25}, ++ /* (208) |11111111|11111110|010 */ {0x7fff2, 19}, ++ /* (209) |11111111|11111111|00011 */ {0x1fffe3, 21}, ++ /* (210) |11111111|11111111|11111001|10 */ {0x3ffffe6, 26}, ++ /* (211) |11111111|11111111|11111100|000 */ {0x7ffffe0, 27}, ++ /* (212) |11111111|11111111|11111100|001 */ {0x7ffffe1, 27}, ++ /* (213) |11111111|11111111|11111001|11 */ {0x3ffffe7, 26}, ++ /* (214) |11111111|11111111|11111100|010 */ {0x7ffffe2, 27}, ++ /* (215) |11111111|11111111|11110010 */ {0xfffff2, 24}, ++ /* (216) |11111111|11111111|00100 */ {0x1fffe4, 21}, ++ /* (217) |11111111|11111111|00101 */ {0x1fffe5, 21}, ++ /* (218) |11111111|11111111|11111010|00 */ {0x3ffffe8, 26}, ++ /* (219) |11111111|11111111|11111010|01 */ {0x3ffffe9, 26}, ++ /* (220) |11111111|11111111|11111111|1101 */ {0xffffffd, 28}, ++ /* (221) |11111111|11111111|11111100|011 */ {0x7ffffe3, 27}, ++ /* (222) |11111111|11111111|11111100|100 */ {0x7ffffe4, 27}, ++ /* (223) |11111111|11111111|11111100|101 */ {0x7ffffe5, 27}, ++ /* (224) |11111111|11111110|1100 */ {0xfffec, 20}, ++ /* (225) |11111111|11111111|11110011 */ {0xfffff3, 24}, ++ /* (226) |11111111|11111110|1101 */ {0xfffed, 20}, ++ /* (227) |11111111|11111111|00110 */ {0x1fffe6, 21}, ++ /* (228) |11111111|11111111|101001 */ {0x3fffe9, 22}, ++ /* (229) |11111111|11111111|00111 */ {0x1fffe7, 21}, ++ /* (230) |11111111|11111111|01000 */ {0x1fffe8, 21}, ++ /* (231) |11111111|11111111|1110011 */ {0x7ffff3, 23}, ++ /* (232) |11111111|11111111|101010 */ {0x3fffea, 22}, ++ /* (233) |11111111|11111111|101011 */ {0x3fffeb, 22}, ++ /* (234) |11111111|11111111|11110111|0 */ {0x1ffffee, 25}, ++ /* (235) |11111111|11111111|11110111|1 */ {0x1ffffef, 25}, ++ /* (236) |11111111|11111111|11110100 */ {0xfffff4, 24}, ++ /* (237) |11111111|11111111|11110101 */ {0xfffff5, 24}, ++ /* (238) |11111111|11111111|11111010|10 */ {0x3ffffea, 26}, ++ /* (239) |11111111|11111111|1110100 */ {0x7ffff4, 23}, ++ /* (240) |11111111|11111111|11111010|11 */ {0x3ffffeb, 26}, ++ /* (241) |11111111|11111111|11111100|110 */ {0x7ffffe6, 27}, ++ /* (242) |11111111|11111111|11111011|00 */ {0x3ffffec, 26}, ++ /* (243) |11111111|11111111|11111011|01 */ {0x3ffffed, 26}, ++ /* (244) |11111111|11111111|11111100|111 */ {0x7ffffe7, 27}, ++ /* (245) |11111111|11111111|11111101|000 */ {0x7ffffe8, 27}, ++ /* (246) |11111111|11111111|11111101|001 */ {0x7ffffe9, 27}, ++ /* (247) |11111111|11111111|11111101|010 */ {0x7ffffea, 27}, ++ /* (248) |11111111|11111111|11111101|011 */ {0x7ffffeb, 27}, ++ /* (249) |11111111|11111111|11111111|1110 */ {0xffffffe, 28}, ++ /* (250) |11111111|11111111|11111101|100 */ {0x7ffffec, 27}, ++ /* (251) |11111111|11111111|11111101|101 */ {0x7ffffed, 27}, ++ /* (252) |11111111|11111111|11111101|110 */ {0x7ffffee, 27}, ++ /* (253) |11111111|11111111|11111101|111 */ {0x7ffffef, 27}, ++ /* (254) |11111111|11111111|11111110|000 */ {0x7fffff0, 27}, ++ /* (255) |11111111|11111111|11111011|10 */ {0x3ffffee, 26}, ++ /*EOS (256) |11111111|11111111|11111111|111111 */ {0x3fffffff, 30} ++ }; ++ ++ static final int[][] LCCODES = new int[CODES.length][]; ++ static final char EOS = 256; ++ ++ // Huffman decode tree stored in a flattened char array for good ++ // locality of reference. ++ static final char[] tree; ++ static final char[] rowsym; ++ static final byte[] rowbits; ++ ++ // Build the Huffman lookup tree and LC TABLE ++ static ++ { ++ System.arraycopy(CODES, 0, LCCODES, 0, CODES.length); ++ for (int i = 'A'; i <= 'Z'; i++) ++ { ++ LCCODES[i] = LCCODES['a' + i - 'A']; ++ } ++ ++ int r = 0; ++ for (int[] ints : CODES) ++ { ++ r += (ints[1] + 7) / 8; ++ } ++ tree = new char[r * 256]; ++ rowsym = new char[r]; ++ rowbits = new byte[r]; ++ ++ r = 0; ++ for (int sym = 0; sym < CODES.length; sym++) ++ { ++ int code = CODES[sym][0]; ++ int len = CODES[sym][1]; ++ ++ int current = 0; ++ ++ while (len > 8) ++ { ++ len -= 8; ++ int i = ((code >>> len) & 0xFF); ++ ++ int t = current * 256 + i; ++ current = tree[t]; ++ if (current == 0) ++ { ++ tree[t] = (char)++r; ++ current = r; ++ } ++ } ++ ++ int terminal = ++r; ++ rowsym[r] = (char)sym; ++ int b = len & 0x07; ++ int terminalBits = b == 0 ? 8 : b; ++ ++ rowbits[r] = (byte)terminalBits; ++ int shift = 8 - len; ++ int start = current * 256 + ((code << shift) & 0xFF); ++ int end = start + (1 << shift); ++ for (int i = start; i < end; i++) ++ { ++ tree[i] = (char)terminal; ++ } ++ } ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanDecoder.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanDecoder.java +new file mode 100644 +index 0000000..48851c1 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanDecoder.java +@@ -0,0 +1,143 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++import java.nio.ByteBuffer; ++ ++import org.eclipse.jetty.http.HttpTokens; ++import org.eclipse.jetty.util.CharsetStringBuilder; ++ ++import static org.eclipse.jetty.http.compression.Huffman.rowbits; ++import static org.eclipse.jetty.http.compression.Huffman.rowsym; ++ ++/** ++ *

Used to decoded Huffman encoded strings.

++ * ++ *

Characters which are illegal field-vchar values are replaced with ++ * either ' ' or '?' as described in RFC9110

++ */ ++public class HuffmanDecoder ++{ ++ private final CharsetStringBuilder.Iso88591StringBuilder _builder = new CharsetStringBuilder.Iso88591StringBuilder(); ++ private int _length = 0; ++ private int _count = 0; ++ private int _node = 0; ++ private int _current = 0; ++ private int _bits = 0; ++ ++ /** ++ * @param length in bytes of the huffman data. ++ */ ++ public void setLength(int length) ++ { ++ if (_count != 0) ++ throw new IllegalStateException(); ++ _length = length; ++ } ++ ++ /** ++ * @param buffer the buffer containing the Huffman encoded bytes. ++ * @return the decoded String. ++ * @throws EncodingException if the huffman encoding is invalid. ++ */ ++ public String decode(ByteBuffer buffer) throws EncodingException ++ { ++ for (; _count < _length; _count++) ++ { ++ if (!buffer.hasRemaining()) ++ return null; ++ ++ int b = buffer.get() & 0xFF; ++ _current = (_current << 8) | b; ++ _bits += 8; ++ while (_bits >= 8) ++ { ++ int i = (_current >>> (_bits - 8)) & 0xFF; ++ _node = Huffman.tree[_node * 256 + i]; ++ if (rowbits[_node] != 0) ++ { ++ if (rowsym[_node] == Huffman.EOS) ++ { ++ reset(); ++ throw new EncodingException("eos_in_content"); ++ } ++ ++ // terminal node ++ char c = rowsym[_node]; ++ c = HttpTokens.sanitizeFieldVchar(c); ++ _builder.append((byte)c); ++ _bits -= rowbits[_node]; ++ _node = 0; ++ } ++ else ++ { ++ // non-terminal node ++ _bits -= 8; ++ } ++ } ++ } ++ ++ while (_bits > 0) ++ { ++ int i = (_current << (8 - _bits)) & 0xFF; ++ int lastNode = _node; ++ _node = Huffman.tree[_node * 256 + i]; ++ ++ if (rowbits[_node] == 0 || rowbits[_node] > _bits) ++ { ++ int requiredPadding = 0; ++ for (int j = 0; j < _bits; j++) ++ { ++ requiredPadding = (requiredPadding << 1) | 1; ++ } ++ ++ if ((i >> (8 - _bits)) != requiredPadding) ++ throw new EncodingException("incorrect_padding"); ++ ++ _node = lastNode; ++ break; ++ } ++ ++ char c = rowsym[_node]; ++ c = HttpTokens.sanitizeFieldVchar(c); ++ _builder.append((byte)c); ++ _bits -= rowbits[_node]; ++ _node = 0; ++ } ++ ++ if (_node != 0) ++ { ++ reset(); ++ throw new EncodingException("bad_termination"); ++ } ++ ++ String value = _builder.build(); ++ reset(); ++ return value; ++ } ++ ++ public void reset() ++ { ++ _builder.reset(); ++ _count = 0; ++ _current = 0; ++ _node = 0; ++ _bits = 0; ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanEncoder.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanEncoder.java +new file mode 100644 +index 0000000..533fc21 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/HuffmanEncoder.java +@@ -0,0 +1,142 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++import java.nio.ByteBuffer; ++ ++import org.eclipse.jetty.http.HttpTokens; ++ ++import static org.eclipse.jetty.http.compression.Huffman.CODES; ++import static org.eclipse.jetty.http.compression.Huffman.LCCODES; ++ ++/** ++ *

Used to encode strings Huffman encoding.

++ * ++ *

Characters are encoded with ISO-8859-1, if any multi-byte characters or ++ * control characters are present the encoder will throw {@link EncodingException}.

++ */ ++public class HuffmanEncoder ++{ ++ private HuffmanEncoder() ++ { ++ } ++ ++ /** ++ * @param s the string to encode. ++ * @return the number of octets needed to encode the string, or -1 if it cannot be encoded. ++ */ ++ public static int octetsNeeded(String s) ++ { ++ return octetsNeeded(CODES, s); ++ } ++ ++ /** ++ * @param b the byte array to encode. ++ * @return the number of octets needed to encode the bytes, or -1 if it cannot be encoded. ++ */ ++ public static int octetsNeeded(byte[] b) ++ { ++ int needed = 0; ++ for (byte value : b) ++ { ++ int c = 0xFF & value; ++ needed += CODES[c][1]; ++ } ++ return (needed + 7) / 8; ++ } ++ ++ /** ++ * @param buffer the buffer to encode into. ++ * @param s the string to encode. ++ */ ++ public static void encode(ByteBuffer buffer, String s) ++ { ++ encode(CODES, buffer, s); ++ } ++ ++ /** ++ * @param s the string to encode in lowercase. ++ * @return the number of octets needed to encode the string, or -1 if it cannot be encoded. ++ */ ++ public static int octetsNeededLowerCase(String s) ++ { ++ return octetsNeeded(LCCODES, s); ++ } ++ ++ /** ++ * @param buffer the buffer to encode into in lowercase. ++ * @param s the string to encode. ++ */ ++ public static void encodeLowerCase(ByteBuffer buffer, String s) ++ { ++ encode(LCCODES, buffer, s); ++ } ++ ++ private static int octetsNeeded(final int[][] table, String s) ++ { ++ int needed = 0; ++ int len = s.length(); ++ for (int i = 0; i < len; i++) ++ { ++ char c = s.charAt(i); ++ if (HttpTokens.isIllegalFieldVchar(c)) ++ return -1; ++ needed += table[c][1]; ++ } ++ ++ return (needed + 7) / 8; ++ } ++ ++ /** ++ * @param table The table to encode by ++ * @param buffer The buffer to encode to ++ * @param s The string to encode ++ */ ++ private static void encode(final int[][] table, ByteBuffer buffer, String s) ++ { ++ long current = 0; ++ int n = 0; ++ int len = s.length(); ++ for (int i = 0; i < len; i++) ++ { ++ char c = s.charAt(i); ++ if (HttpTokens.isIllegalFieldVchar(c)) ++ throw new IllegalArgumentException(); ++ int code = table[c][0]; ++ int bits = table[c][1]; ++ ++ current <<= bits; ++ current |= code; ++ n += bits; ++ ++ while (n >= 8) ++ { ++ n -= 8; ++ buffer.put((byte)(current >> n)); ++ } ++ } ++ ++ if (n > 0) ++ { ++ current <<= (8 - n); ++ current |= (0xFF >>> n); ++ buffer.put((byte)(current)); ++ } ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerDecoder.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerDecoder.java +new file mode 100644 +index 0000000..590b8c1 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerDecoder.java +@@ -0,0 +1,113 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++import java.nio.ByteBuffer; ++ ++/** ++ * Used to decode integers as described in RFC7541. ++ */ ++public class NBitIntegerDecoder ++{ ++ private int _prefix; ++ private long _total; ++ private long _multiplier; ++ private boolean _started; ++ ++ /** ++ * Set the prefix length in of the integer representation in bits. ++ * A prefix of 6 means the integer representation starts after the first 2 bits. ++ * @param prefix the number of bits in the integer prefix. ++ */ ++ public void setPrefix(int prefix) ++ { ++ if (_started) ++ throw new IllegalStateException(); ++ _prefix = prefix; ++ } ++ ++ /** ++ * Decode an integer from the buffer. If the buffer does not contain the complete integer representation ++ * a value of -1 is returned to indicate that more data is needed to complete parsing. ++ * This should be only after the prefix has been set with {@link #setPrefix(int)}. ++ * @param buffer the buffer containing the encoded integer. ++ * @return the decoded integer or -1 to indicate that more data is needed. ++ * @throws ArithmeticException if the value overflows a int. ++ */ ++ public int decodeInt(ByteBuffer buffer) ++ { ++ return Math.toIntExact(decodeLong(buffer)); ++ } ++ ++ /** ++ * Decode a long from the buffer. If the buffer does not contain the complete integer representation ++ * a value of -1 is returned to indicate that more data is needed to complete parsing. ++ * This should be only after the prefix has been set with {@link #setPrefix(int)}. ++ * @param buffer the buffer containing the encoded integer. ++ * @return the decoded long or -1 to indicate that more data is needed. ++ * @throws ArithmeticException if the value overflows a long. ++ */ ++ public long decodeLong(ByteBuffer buffer) ++ { ++ if (!_started) ++ { ++ if (!buffer.hasRemaining()) ++ return -1; ++ ++ _started = true; ++ _multiplier = 1; ++ int nbits = 0xFF >>> (8 - _prefix); ++ _total = buffer.get() & nbits; ++ if (_total < nbits) ++ { ++ long total = _total; ++ reset(); ++ return total; ++ } ++ } ++ ++ while (true) ++ { ++ // If we have no more remaining we return -1 to indicate that more data is needed to continue parsing. ++ if (!buffer.hasRemaining()) ++ return -1; ++ ++ int b = buffer.get() & 0xFF; ++ _total = Math.addExact(_total, (b & 127) * _multiplier); ++ _multiplier = Math.multiplyExact(_multiplier, 128); ++ if ((b & 128) == 0) ++ { ++ long total = _total; ++ reset(); ++ return total; ++ } ++ } ++ } ++ ++ /** ++ * Reset the internal state of the parser. ++ */ ++ public void reset() ++ { ++ _prefix = 0; ++ _total = 0; ++ _multiplier = 1; ++ _started = false; ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerEncoder.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerEncoder.java +new file mode 100644 +index 0000000..f78440f +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitIntegerEncoder.java +@@ -0,0 +1,96 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++import java.nio.ByteBuffer; ++ ++/** ++ * Used to encode integers as described in RFC7541. ++ */ ++public class NBitIntegerEncoder ++{ ++ private NBitIntegerEncoder() ++ { ++ } ++ ++ /** ++ * @param prefix the prefix used to encode this long. ++ * @param value the integer to encode. ++ * @return the number of octets it would take to encode the long. ++ */ ++ public static int octetsNeeded(int prefix, long value) ++ { ++ if (prefix <= 0 || prefix > 8) ++ throw new IllegalArgumentException(); ++ ++ int nbits = 0xFF >>> (8 - prefix); ++ value = value - nbits; ++ if (value < 0) ++ return 1; ++ if (value == 0) ++ return 2; ++ int lz = Long.numberOfLeadingZeros(value); ++ int log = 64 - lz; ++ ++ // The return value is 1 for the prefix + the number of 7-bit groups necessary to encode the value. ++ return 1 + (log + 6) / 7; ++ } ++ ++ /** ++ * ++ * @param buffer the buffer to encode into. ++ * @param prefix the prefix used to encode this long. ++ * @param value the long to encode into the buffer. ++ */ ++ public static void encode(ByteBuffer buffer, int prefix, long value) ++ { ++ if (prefix <= 0 || prefix > 8) ++ throw new IllegalArgumentException(); ++ ++ // If prefix is 8 we add an empty byte as we initially modify last byte from the buffer. ++ if (prefix == 8) ++ buffer.put((byte)0x00); ++ ++ int bits = 0xFF >>> (8 - prefix); ++ int p = buffer.position() - 1; ++ if (value < bits) ++ { ++ buffer.put(p, (byte)((buffer.get(p) & ~bits) | value)); ++ } ++ else ++ { ++ buffer.put(p, (byte)(buffer.get(p) | bits)); ++ long length = value - bits; ++ while (true) ++ { ++ // The value of ~0x7F is different to 0x80 because of all the 1s from the MSB. ++ if ((length & ~0x7FL) == 0) ++ { ++ buffer.put((byte)length); ++ return; ++ } ++ else ++ { ++ buffer.put((byte)((length & 0x7F) | 0x80)); ++ length >>>= 7; ++ } ++ } ++ } ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringDecoder.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringDecoder.java +new file mode 100644 +index 0000000..a871597 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringDecoder.java +@@ -0,0 +1,138 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++import java.nio.ByteBuffer; ++ ++import org.eclipse.jetty.util.CharsetStringBuilder; ++ ++/** ++ *

Used to decode string literals as described in RFC7541.

++ * ++ *

The string literal representation consists of a single bit to indicate whether huffman encoding is used, ++ * followed by the string byte length encoded with the n-bit integer representation also from RFC7541, and ++ * the bytes of the string are directly after this.

++ * ++ *

Characters which are illegal field-vchar values are replaced with ++ * either ' ' or '?' as described in RFC9110

++ */ ++public class NBitStringDecoder ++{ ++ private final NBitIntegerDecoder _integerDecoder; ++ private final HuffmanDecoder _huffmanBuilder; ++ private final CharsetStringBuilder.Iso88591StringBuilder _builder; ++ private boolean _huffman; ++ private int _count; ++ private int _length; ++ private int _prefix; ++ ++ private State _state = State.PARSING; ++ ++ private enum State ++ { ++ PARSING, ++ LENGTH, ++ VALUE ++ } ++ ++ public NBitStringDecoder() ++ { ++ _integerDecoder = new NBitIntegerDecoder(); ++ _huffmanBuilder = new HuffmanDecoder(); ++ _builder = new CharsetStringBuilder.Iso88591StringBuilder(); ++ } ++ ++ /** ++ * Set the prefix length in of the string representation in bits. ++ * A prefix of 6 means the string representation starts after the first 2 bits. ++ * @param prefix the number of bits in the string prefix. ++ */ ++ public void setPrefix(int prefix) ++ { ++ if (_state != State.PARSING) ++ throw new IllegalStateException(); ++ _prefix = prefix; ++ } ++ ++ /** ++ * Decode a string from the buffer. If the buffer does not contain the complete string representation ++ * then a value of null is returned to indicate that more data is needed to complete parsing. ++ * This should be only after the prefix has been set with {@link #setPrefix(int)}. ++ * @param buffer the buffer containing the encoded string. ++ * @return the decoded string or null to indicate that more data is needed. ++ * @throws ArithmeticException if the string length value overflows a int. ++ * @throws EncodingException if the string encoding is invalid. ++ */ ++ public String decode(ByteBuffer buffer) throws EncodingException ++ { ++ while (true) ++ { ++ switch (_state) ++ { ++ case PARSING: ++ byte firstByte = buffer.get(buffer.position()); ++ _huffman = ((0x80 >>> (8 - _prefix)) & firstByte) != 0; ++ _state = State.LENGTH; ++ _integerDecoder.setPrefix(_prefix - 1); ++ continue; ++ ++ case LENGTH: ++ _length = _integerDecoder.decodeInt(buffer); ++ if (_length < 0) ++ return null; ++ _state = State.VALUE; ++ _huffmanBuilder.setLength(_length); ++ continue; ++ ++ case VALUE: ++ String value = _huffman ? _huffmanBuilder.decode(buffer) : stringDecode(buffer); ++ if (value != null) ++ reset(); ++ return value; ++ ++ default: ++ throw new IllegalStateException(_state.name()); ++ } ++ } ++ } ++ ++ private String stringDecode(ByteBuffer buffer) ++ { ++ for (; _count < _length; _count++) ++ { ++ if (!buffer.hasRemaining()) ++ return null; ++ _builder.append(buffer.get()); ++ } ++ ++ return _builder.build(); ++ } ++ ++ public void reset() ++ { ++ _state = State.PARSING; ++ _integerDecoder.reset(); ++ _huffmanBuilder.reset(); ++ _builder.reset(); ++ _prefix = 0; ++ _count = 0; ++ _length = 0; ++ _huffman = false; ++ } ++} +diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringEncoder.java b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringEncoder.java +new file mode 100644 +index 0000000..5729ec0 +--- /dev/null ++++ b/jetty-http/src/main/java/org/eclipse/jetty/http/compression/NBitStringEncoder.java +@@ -0,0 +1,82 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http.compression; ++ ++import java.nio.ByteBuffer; ++ ++import org.eclipse.jetty.http.HttpTokens; ++ ++public class NBitStringEncoder ++{ ++ private NBitStringEncoder() ++ { ++ } ++ ++ public static int octetsNeeded(int prefix, String value, boolean huffman) ++ { ++ if (prefix <= 0 || prefix > 8) ++ throw new IllegalArgumentException(); ++ ++ int contentPrefix = (prefix == 1) ? 8 : prefix - 1; ++ int encodedValueSize = huffman ? HuffmanEncoder.octetsNeeded(value) : value.length(); ++ int encodedLengthSize = NBitIntegerEncoder.octetsNeeded(contentPrefix, encodedValueSize); ++ ++ // If prefix was 1, then we count an extra byte needed for the prefix. ++ return encodedLengthSize + encodedValueSize + (prefix == 1 ? 1 : 0); ++ } ++ ++ public static void encode(ByteBuffer buffer, int prefix, String value, boolean huffman) ++ { ++ if (prefix <= 0 || prefix > 8) ++ throw new IllegalArgumentException(); ++ ++ byte huffmanFlag = huffman ? (byte)(0x01 << (prefix - 1)) : (byte)0x00; ++ if (prefix == 8) ++ { ++ buffer.put(huffmanFlag); ++ } ++ else ++ { ++ int p = buffer.position() - 1; ++ buffer.put(p, (byte)(buffer.get(p) | huffmanFlag)); ++ } ++ ++ // Start encoding size & content in rest of prefix. ++ // If prefix was 1 we set it back to 8 to indicate to start on a new byte. ++ prefix = (prefix == 1) ? 8 : prefix - 1; ++ ++ if (huffman) ++ { ++ int encodedValueSize = HuffmanEncoder.octetsNeeded(value); ++ NBitIntegerEncoder.encode(buffer, prefix, encodedValueSize); ++ HuffmanEncoder.encode(buffer, value); ++ } ++ else ++ { ++ int encodedValueSize = value.length(); ++ NBitIntegerEncoder.encode(buffer, prefix, encodedValueSize); ++ for (int i = 0; i < encodedValueSize; i++) ++ { ++ char c = value.charAt(i); ++ c = HttpTokens.sanitizeFieldVchar(c); ++ buffer.put((byte)c); ++ } ++ } ++ } ++} +diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/HuffmanTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/HuffmanTest.java +new file mode 100644 +index 0000000..e9e5ae8 +--- /dev/null ++++ b/jetty-http/src/test/java/org/eclipse/jetty/http/HuffmanTest.java +@@ -0,0 +1,168 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http; ++ ++import java.nio.ByteBuffer; ++import java.util.Locale; ++import java.util.stream.Stream; ++ ++import org.eclipse.jetty.http.compression.EncodingException; ++import org.eclipse.jetty.http.compression.HuffmanDecoder; ++import org.eclipse.jetty.http.compression.HuffmanEncoder; ++import org.eclipse.jetty.util.BufferUtil; ++import org.eclipse.jetty.util.TypeUtil; ++import org.junit.jupiter.params.ParameterizedTest; ++import org.junit.jupiter.params.provider.Arguments; ++import org.junit.jupiter.params.provider.MethodSource; ++ ++import static org.hamcrest.MatcherAssert.assertThat; ++import static org.hamcrest.Matchers.equalTo; ++import static org.hamcrest.Matchers.greaterThan; ++import static org.junit.jupiter.api.Assertions.assertEquals; ++import static org.junit.jupiter.api.Assertions.assertThrows; ++ ++public class HuffmanTest ++{ ++ public static String decode(ByteBuffer buffer, int length) throws EncodingException ++ { ++ HuffmanDecoder huffmanDecoder = new HuffmanDecoder(); ++ huffmanDecoder.setLength(length); ++ String decoded = huffmanDecoder.decode(buffer); ++ if (decoded == null) ++ throw new EncodingException("invalid string encoding"); ++ ++ huffmanDecoder.reset(); ++ return decoded; ++ } ++ ++ public static Stream data() ++ { ++ return Stream.of( ++ new String[][]{ ++ {"D.4.1", "f1e3c2e5f23a6ba0ab90f4ff", "www.example.com"}, ++ {"D.4.2", "a8eb10649cbf", "no-cache"}, ++ {"D.6.1k", "6402", "302"}, ++ {"D.6.1v", "aec3771a4b", "private"}, ++ {"D.6.1d", "d07abe941054d444a8200595040b8166e082a62d1bff", "Mon, 21 Oct 2013 20:13:21 GMT"}, ++ {"D.6.1l", "9d29ad171863c78f0b97c8e9ae82ae43d3", "https://www.example.com"}, ++ {"D.6.2te", "640cff", "303"}, ++ }).map(Arguments::of); ++ } ++ ++ @ParameterizedTest(name = "[{index}] spec={0}") ++ @MethodSource("data") ++ public void testDecode(String specSection, String hex, String expected) throws Exception ++ { ++ byte[] encoded = TypeUtil.fromHexString(hex); ++ HuffmanDecoder huffmanDecoder = new HuffmanDecoder(); ++ huffmanDecoder.setLength(encoded.length); ++ String decoded = huffmanDecoder.decode(ByteBuffer.wrap(encoded)); ++ assertEquals(expected, decoded, specSection); ++ } ++ ++ @ParameterizedTest(name = "[{index}] spec={0}") ++ @MethodSource("data") ++ public void testEncode(String specSection, String hex, String expected) ++ { ++ ByteBuffer buf = BufferUtil.allocate(1024); ++ int pos = BufferUtil.flipToFill(buf); ++ HuffmanEncoder.encode(buf, expected); ++ BufferUtil.flipToFlush(buf, pos); ++ String encoded = TypeUtil.toHexString(BufferUtil.toArray(buf)).toLowerCase(Locale.ENGLISH); ++ assertEquals(hex, encoded, specSection); ++ assertEquals(hex.length() / 2, HuffmanEncoder.octetsNeeded(expected)); ++ } ++ ++ public static Stream testDecode8859OnlyArguments() ++ { ++ return Stream.of( ++ // These are valid characters for ISO-8859-1. ++ Arguments.of("FfFe6f", (char)128), ++ Arguments.of("FfFfFbBf", (char)255), ++ ++ // RFC9110 specifies these to be replaced as ' ' during decoding. ++ Arguments.of("FfC7", ' '), // (char)0 ++ Arguments.of("FfFfFfF7", ' '), // '\r' ++ Arguments.of("FfFfFfF3", ' '), // '\n' ++ ++ // We replace control chars with the default replacement character of '?'. ++ Arguments.of("FfFfFfBf", '?') // (char)(' ' - 1) ++ ); ++ } ++ ++ @ParameterizedTest(name = "[{index}]") // don't include unprintable character in test display-name ++ @MethodSource("testDecode8859OnlyArguments") ++ public void testDecode8859Only(String hexString, char expected) throws Exception ++ { ++ ByteBuffer buffer = ByteBuffer.wrap(TypeUtil.fromHexString(hexString)); ++ String decoded = decode(buffer, buffer.remaining()); ++ assertThat(decoded, equalTo("" + expected)); ++ } ++ ++ public static Stream testEncode8859OnlyArguments() ++ { ++ return Stream.of( ++ Arguments.of((char)128, (char)128), ++ Arguments.of((char)255, (char)255), ++ Arguments.of((char)0, null), ++ Arguments.of('\r', null), ++ Arguments.of('\n', null), ++ Arguments.of((char)456, null), ++ Arguments.of((char)256, null), ++ Arguments.of((char)-1, null), ++ Arguments.of((char)(' ' - 1), null) ++ ); ++ } ++ ++ @ParameterizedTest(name = "[{index}]") // don't include unprintable character in test display-name ++ @MethodSource("testEncode8859OnlyArguments") ++ public void testEncode8859Only(char value, Character expectedValue) throws Exception ++ { ++ String s = "value = '" + value + "'"; ++ ++ // If expected is null we should not be able to encode. ++ if (expectedValue == null) ++ { ++ assertThat(HuffmanEncoder.octetsNeeded(s), equalTo(-1)); ++ assertThrows(Throwable.class, () -> encode(s)); ++ return; ++ } ++ ++ String expected = "value = '" + expectedValue + "'"; ++ assertThat(HuffmanEncoder.octetsNeeded(s), greaterThan(0)); ++ ByteBuffer buffer = encode(s); ++ String decode = decode(buffer); ++ System.err.println("decoded: " + decode); ++ assertThat(decode, equalTo(expected)); ++ } ++ ++ private ByteBuffer encode(String s) ++ { ++ ByteBuffer buffer = BufferUtil.allocate(32); ++ BufferUtil.clearToFill(buffer); ++ HuffmanEncoder.encode(buffer, s); ++ BufferUtil.flipToFlush(buffer, 0); ++ return buffer; ++ } ++ ++ private String decode(ByteBuffer buffer) throws Exception ++ { ++ return decode(buffer, buffer.remaining()); ++ } ++} +diff --git a/jetty-http/src/test/java/org/eclipse/jetty/http/NBitIntegerTest.java b/jetty-http/src/test/java/org/eclipse/jetty/http/NBitIntegerTest.java +new file mode 100644 +index 0000000..03f7b5f +--- /dev/null ++++ b/jetty-http/src/test/java/org/eclipse/jetty/http/NBitIntegerTest.java +@@ -0,0 +1,207 @@ ++// ++// ======================================================================== ++// Copyright (c) 1995-2022 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.http; ++ ++import java.nio.ByteBuffer; ++ ++import org.eclipse.jetty.http.compression.NBitIntegerDecoder; ++import org.eclipse.jetty.http.compression.NBitIntegerEncoder; ++import org.eclipse.jetty.util.BufferUtil; ++import org.eclipse.jetty.util.TypeUtil; ++import org.junit.jupiter.api.Test; ++ ++import static org.junit.jupiter.api.Assertions.assertEquals; ++ ++@SuppressWarnings("PointlessArithmeticExpression") ++public class NBitIntegerTest ++{ ++ private final NBitIntegerDecoder _decoder = new NBitIntegerDecoder(); ++ ++ @Test ++ public void testOctetsNeeded() ++ { ++ assertEquals(1, NBitIntegerEncoder.octetsNeeded(5, 10)); ++ assertEquals(3, NBitIntegerEncoder.octetsNeeded(5, 1337)); ++ assertEquals(1, NBitIntegerEncoder.octetsNeeded(8, 42)); ++ assertEquals(3, NBitIntegerEncoder.octetsNeeded(8, 1337)); ++ ++ assertEquals(1, NBitIntegerEncoder.octetsNeeded(6, 62)); ++ assertEquals(2, NBitIntegerEncoder.octetsNeeded(6, 63)); ++ assertEquals(2, NBitIntegerEncoder.octetsNeeded(6, 64)); ++ assertEquals(3, NBitIntegerEncoder.octetsNeeded(6, 63 + 0x00 + 0x80 * 0x01)); ++ assertEquals(4, NBitIntegerEncoder.octetsNeeded(6, 63 + 0x00 + 0x80 * 0x80)); ++ assertEquals(5, NBitIntegerEncoder.octetsNeeded(6, 63 + 0x00 + 0x80 * 0x80 * 0x80)); ++ } ++ ++ @Test ++ public void testEncode() ++ { ++ testEncode(6, 0, "00"); ++ testEncode(6, 1, "01"); ++ testEncode(6, 62, "3e"); ++ testEncode(6, 63, "3f00"); ++ testEncode(6, 63 + 1, "3f01"); ++ testEncode(6, 63 + 0x7e, "3f7e"); ++ testEncode(6, 63 + 0x7f, "3f7f"); ++ testEncode(6, 63 + 0x00 + 0x80 * 0x01, "3f8001"); ++ testEncode(6, 63 + 0x01 + 0x80 * 0x01, "3f8101"); ++ testEncode(6, 63 + 0x7f + 0x80 * 0x01, "3fFf01"); ++ testEncode(6, 63 + 0x00 + 0x80 * 0x02, "3f8002"); ++ testEncode(6, 63 + 0x01 + 0x80 * 0x02, "3f8102"); ++ testEncode(6, 63 + 0x7f + 0x80 * 0x7f, "3fFf7f"); ++ testEncode(6, 63 + 0x00 + 0x80 * 0x80, "3f808001"); ++ testEncode(6, 63 + 0x7f + 0x80 * 0x80 * 0x7f, "3fFf807f"); ++ testEncode(6, 63 + 0x00 + 0x80 * 0x80 * 0x80, "3f80808001"); ++ ++ testEncode(8, 0, "00"); ++ testEncode(8, 1, "01"); ++ testEncode(8, 128, "80"); ++ testEncode(8, 254, "Fe"); ++ testEncode(8, 255, "Ff00"); ++ testEncode(8, 255 + 1, "Ff01"); ++ testEncode(8, 255 + 0x7e, "Ff7e"); ++ testEncode(8, 255 + 0x7f, "Ff7f"); ++ testEncode(8, 255 + 0x80, "Ff8001"); ++ testEncode(8, 255 + 0x00 + 0x80 * 0x80, "Ff808001"); ++ } ++ ++ public void testEncode(int n, int i, String expected) ++ { ++ ByteBuffer buf = BufferUtil.allocate(16); ++ int p = BufferUtil.flipToFill(buf); ++ if (n < 8) ++ buf.put((byte)0x00); ++ NBitIntegerEncoder.encode(buf, n, i); ++ BufferUtil.flipToFlush(buf, p); ++ String r = TypeUtil.toHexString(BufferUtil.toArray(buf)); ++ assertEquals(expected, r); ++ ++ assertEquals(expected.length() / 2, NBitIntegerEncoder.octetsNeeded(n, i)); ++ } ++ ++ @Test ++ public void testDecode() ++ { ++ testDecode(6, 0, "00"); ++ testDecode(6, 1, "01"); ++ testDecode(6, 62, "3e"); ++ testDecode(6, 63, "3f00"); ++ testDecode(6, 63 + 1, "3f01"); ++ testDecode(6, 63 + 0x7e, "3f7e"); ++ testDecode(6, 63 + 0x7f, "3f7f"); ++ testDecode(6, 63 + 0x80, "3f8001"); ++ testDecode(6, 63 + 0x81, "3f8101"); ++ testDecode(6, 63 + 0x7f + 0x80 * 0x01, "3fFf01"); ++ testDecode(6, 63 + 0x00 + 0x80 * 0x02, "3f8002"); ++ testDecode(6, 63 + 0x01 + 0x80 * 0x02, "3f8102"); ++ testDecode(6, 63 + 0x7f + 0x80 * 0x7f, "3fFf7f"); ++ testDecode(6, 63 + 0x00 + 0x80 * 0x80, "3f808001"); ++ testDecode(6, 63 + 0x7f + 0x80 * 0x80 * 0x7f, "3fFf807f"); ++ testDecode(6, 63 + 0x00 + 0x80 * 0x80 * 0x80, "3f80808001"); ++ ++ testDecode(8, 0, "00"); ++ testDecode(8, 1, "01"); ++ testDecode(8, 128, "80"); ++ testDecode(8, 254, "Fe"); ++ testDecode(8, 255, "Ff00"); ++ testDecode(8, 255 + 1, "Ff01"); ++ testDecode(8, 255 + 0x7e, "Ff7e"); ++ testDecode(8, 255 + 0x7f, "Ff7f"); ++ testDecode(8, 255 + 0x80, "Ff8001"); ++ testDecode(8, 255 + 0x00 + 0x80 * 0x80, "Ff808001"); ++ } ++ ++ public void testDecode(int n, int expected, String encoded) ++ { ++ ByteBuffer buf = ByteBuffer.wrap(TypeUtil.fromHexString(encoded)); ++ _decoder.setPrefix(n); ++ assertEquals(expected, _decoder.decodeInt(buf)); ++ } ++ ++ @Test ++ public void testEncodeExampleD11() ++ { ++ ByteBuffer buf = BufferUtil.allocate(16); ++ int p = BufferUtil.flipToFill(buf); ++ buf.put((byte)0x77); ++ buf.put((byte)0xFF); ++ NBitIntegerEncoder.encode(buf, 5, 10); ++ BufferUtil.flipToFlush(buf, p); ++ ++ String r = TypeUtil.toHexString(BufferUtil.toArray(buf)); ++ ++ assertEquals("77Ea", r); ++ } ++ ++ @Test ++ public void testDecodeExampleD11() ++ { ++ ByteBuffer buf = ByteBuffer.wrap(TypeUtil.fromHexString("77EaFF")); ++ buf.position(1); ++ _decoder.setPrefix(5); ++ assertEquals(10, _decoder.decodeInt(buf)); ++ } ++ ++ @Test ++ public void testEncodeExampleD12() ++ { ++ ByteBuffer buf = BufferUtil.allocate(16); ++ int p = BufferUtil.flipToFill(buf); ++ buf.put((byte)0x88); ++ buf.put((byte)0x00); ++ NBitIntegerEncoder.encode(buf, 5, 1337); ++ BufferUtil.flipToFlush(buf, p); ++ ++ String r = TypeUtil.toHexString(BufferUtil.toArray(buf)); ++ assertEquals("881f9a0a", r); ++ } ++ ++ @Test ++ public void testDecodeExampleD12() ++ { ++ ByteBuffer buf = ByteBuffer.wrap(TypeUtil.fromHexString("881f9a0aff")); ++ buf.position(1); ++ _decoder.setPrefix(5); ++ assertEquals(1337, _decoder.decodeInt(buf)); ++ } ++ ++ @Test ++ public void testEncodeExampleD13() ++ { ++ ByteBuffer buf = BufferUtil.allocate(16); ++ int p = BufferUtil.flipToFill(buf); ++ buf.put((byte)0x88); ++ buf.put((byte)0xFF); ++ NBitIntegerEncoder.encode(buf, 8, 42); ++ BufferUtil.flipToFlush(buf, p); ++ ++ String r = TypeUtil.toHexString(BufferUtil.toArray(buf)); ++ ++ assertEquals("88Ff2a", r); ++ } ++ ++ @Test ++ public void testDecodeExampleD13() ++ { ++ ByteBuffer buf = ByteBuffer.wrap(TypeUtil.fromHexString("882aFf")); ++ buf.position(1); ++ _decoder.setPrefix(8); ++ assertEquals(42, _decoder.decodeInt(buf)); ++ } ++} +diff --git a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java +index 18de3d7..14a6491 100644 +--- a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java ++++ b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java +@@ -36,6 +36,7 @@ import org.eclipse.jetty.http2.FlowControlStrategy; + import org.eclipse.jetty.http2.api.Session; + import org.eclipse.jetty.http2.frames.Frame; + import org.eclipse.jetty.http2.frames.SettingsFrame; ++import org.eclipse.jetty.http2.hpack.HpackContext; + import org.eclipse.jetty.io.ByteBufferPool; + import org.eclipse.jetty.io.ClientConnectionFactory; + import org.eclipse.jetty.io.Connection; +@@ -125,6 +126,7 @@ public class HTTP2Client extends ContainerLifeCycle + private int selectors = 1; + private long idleTimeout = 30000; + private long connectTimeout = 10000; ++ private long streamIdleTimeout; + private boolean connectBlocking; + private SocketAddress bindAddress; + private boolean tcpNoDelay = true; +@@ -132,11 +134,13 @@ public class HTTP2Client extends ContainerLifeCycle + private List protocols = Arrays.asList("h2", "h2-17", "h2-16", "h2-15", "h2-14"); + private int initialSessionRecvWindow = 16 * 1024 * 1024; + private int initialStreamRecvWindow = 8 * 1024 * 1024; +- private int maxFrameLength = Frame.DEFAULT_MAX_LENGTH; ++ private int maxFrameSize = Frame.DEFAULT_MAX_LENGTH; + private int maxConcurrentPushedStreams = 32; + private int maxSettingsKeys = SettingsFrame.DEFAULT_MAX_KEYS; +- private int maxDynamicTableSize = 4096; ++ private int maxDecoderTableCapacity = HpackContext.DEFAULT_MAX_TABLE_CAPACITY; ++ private int maxEncoderTableCapacity = HpackContext.DEFAULT_MAX_TABLE_CAPACITY; + private int maxHeaderBlockFragment = 0; ++ private int maxResponseHeadersSize = 8 * 1024; + private FlowControlStrategy.Factory flowControlStrategyFactory = () -> new BufferingFlowControlStrategy(0.5F); + + @Override +@@ -263,6 +267,17 @@ public class HTTP2Client extends ContainerLifeCycle + this.idleTimeout = idleTimeout; + } + ++ @ManagedAttribute("The stream idle timeout in milliseconds") ++ public long getStreamIdleTimeout() ++ { ++ return streamIdleTimeout; ++ } ++ ++ public void setStreamIdleTimeout(long streamIdleTimeout) ++ { ++ this.streamIdleTimeout = streamIdleTimeout; ++ } ++ + @ManagedAttribute("The connect timeout in milliseconds") + public long getConnectTimeout() + { +@@ -352,15 +367,28 @@ public class HTTP2Client extends ContainerLifeCycle + this.initialStreamRecvWindow = initialStreamRecvWindow; + } + ++ @Deprecated + @ManagedAttribute("The max frame length in bytes") + public int getMaxFrameLength() + { +- return maxFrameLength; ++ return getMaxFrameSize(); + } + ++ @Deprecated + public void setMaxFrameLength(int maxFrameLength) + { +- this.maxFrameLength = maxFrameLength; ++ setMaxFrameSize(maxFrameLength); ++ } ++ ++ @ManagedAttribute("The max frame size in bytes") ++ public int getMaxFrameSize() ++ { ++ return maxFrameSize; ++ } ++ ++ public void setMaxFrameSize(int maxFrameSize) ++ { ++ this.maxFrameSize = maxFrameSize; + } + + @ManagedAttribute("The max number of concurrent pushed streams") +@@ -385,15 +413,45 @@ public class HTTP2Client extends ContainerLifeCycle + this.maxSettingsKeys = maxSettingsKeys; + } + ++ @ManagedAttribute("The HPACK encoder dynamic table maximum capacity") ++ public int getMaxEncoderTableCapacity() ++ { ++ return maxEncoderTableCapacity; ++ } ++ ++ /** ++ *

Sets the limit for the encoder HPACK dynamic table capacity.

++ *

Setting this value to {@code 0} disables the use of the dynamic table.

++ * ++ * @param maxEncoderTableCapacity The HPACK encoder dynamic table maximum capacity ++ */ ++ public void setMaxEncoderTableCapacity(int maxEncoderTableCapacity) ++ { ++ this.maxEncoderTableCapacity = maxEncoderTableCapacity; ++ } ++ ++ @ManagedAttribute("The HPACK decoder dynamic table maximum capacity") ++ public int getMaxDecoderTableCapacity() ++ { ++ return maxDecoderTableCapacity; ++ } ++ ++ public void setMaxDecoderTableCapacity(int maxDecoderTableCapacity) ++ { ++ this.maxDecoderTableCapacity = maxDecoderTableCapacity; ++ } ++ ++ @Deprecated + @ManagedAttribute("The HPACK dynamic table maximum size") + public int getMaxDynamicTableSize() + { +- return maxDynamicTableSize; ++ return getMaxDecoderTableCapacity(); + } + ++ @Deprecated + public void setMaxDynamicTableSize(int maxDynamicTableSize) + { +- this.maxDynamicTableSize = maxDynamicTableSize; ++ setMaxDecoderTableCapacity(maxDynamicTableSize); + } + + @ManagedAttribute("The max size of header block fragments") +@@ -407,6 +465,17 @@ public class HTTP2Client extends ContainerLifeCycle + this.maxHeaderBlockFragment = maxHeaderBlockFragment; + } + ++ @ManagedAttribute("The max size of response headers") ++ public int getMaxResponseHeadersSize() ++ { ++ return maxResponseHeadersSize; ++ } ++ ++ public void setMaxResponseHeadersSize(int maxResponseHeadersSize) ++ { ++ this.maxResponseHeadersSize = maxResponseHeadersSize; ++ } ++ + public void connect(InetSocketAddress address, Session.Listener listener, Promise promise) + { + connect(null, address, listener, promise); +diff --git a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java +index a721079..de96fd6 100644 +--- a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java ++++ b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java +@@ -27,10 +27,12 @@ import org.eclipse.jetty.http2.FlowControlStrategy; + import org.eclipse.jetty.http2.HTTP2Connection; + import org.eclipse.jetty.http2.ISession; + import org.eclipse.jetty.http2.api.Session; ++import org.eclipse.jetty.http2.frames.Frame; + import org.eclipse.jetty.http2.frames.PrefaceFrame; + import org.eclipse.jetty.http2.frames.SettingsFrame; + import org.eclipse.jetty.http2.frames.WindowUpdateFrame; + import org.eclipse.jetty.http2.generator.Generator; ++import org.eclipse.jetty.http2.hpack.HpackContext; + import org.eclipse.jetty.http2.parser.Parser; + import org.eclipse.jetty.io.ByteBufferPool; + import org.eclipse.jetty.io.ClientConnectionFactory; +@@ -56,25 +58,32 @@ public class HTTP2ClientConnectionFactory implements ClientConnectionFactory + public Connection newConnection(EndPoint endPoint, Map context) + { + HTTP2Client client = (HTTP2Client)context.get(CLIENT_CONTEXT_KEY); +- ByteBufferPool byteBufferPool = (ByteBufferPool)context.get(BYTE_BUFFER_POOL_CONTEXT_KEY); +- Executor executor = (Executor)context.get(EXECUTOR_CONTEXT_KEY); +- Scheduler scheduler = (Scheduler)context.get(SCHEDULER_CONTEXT_KEY); ++ ByteBufferPool byteBufferPool = client.getByteBufferPool(); ++ Executor executor = client.getExecutor(); ++ Scheduler scheduler = client.getScheduler(); + Session.Listener listener = (Session.Listener)context.get(SESSION_LISTENER_CONTEXT_KEY); + @SuppressWarnings("unchecked") +- Promise promise = (Promise)context.get(SESSION_PROMISE_CONTEXT_KEY); ++ Promise sessionPromise = (Promise)context.get(SESSION_PROMISE_CONTEXT_KEY); + +- Generator generator = new Generator(byteBufferPool, client.getMaxDynamicTableSize(), client.getMaxHeaderBlockFragment()); ++ Generator generator = new Generator(byteBufferPool, client.getMaxHeaderBlockFragment()); + FlowControlStrategy flowControl = client.getFlowControlStrategyFactory().newFlowControlStrategy(); +- HTTP2ClientSession session = new HTTP2ClientSession(scheduler, endPoint, generator, listener, flowControl); +- session.setMaxRemoteStreams(client.getMaxConcurrentPushedStreams()); + +- Parser parser = new Parser(byteBufferPool, session, 4096, 8192); +- parser.setMaxFrameLength(client.getMaxFrameLength()); ++ Parser parser = new Parser(byteBufferPool, client.getMaxResponseHeadersSize()); ++ parser.setMaxFrameSize(client.getMaxFrameSize()); + parser.setMaxSettingsKeys(client.getMaxSettingsKeys()); + ++ HTTP2ClientSession session = new HTTP2ClientSession(scheduler, endPoint, parser, generator, listener, flowControl); ++ session.setMaxRemoteStreams(client.getMaxConcurrentPushedStreams()); ++ session.setMaxEncoderTableCapacity(client.getMaxEncoderTableCapacity()); ++ long streamIdleTimeout = client.getStreamIdleTimeout(); ++ if (streamIdleTimeout > 0) ++ session.setStreamIdleTimeout(streamIdleTimeout); ++ + HTTP2ClientConnection connection = new HTTP2ClientConnection(client, byteBufferPool, executor, endPoint, +- parser, session, client.getInputBufferSize(), promise, listener); ++ session, client.getInputBufferSize(), sessionPromise, listener); + connection.addListener(connectionListener); ++ parser.init(connection.wrapParserListener(session)); ++ + return customize(connection, context); + } + +@@ -84,9 +93,9 @@ public class HTTP2ClientConnectionFactory implements ClientConnectionFactory + private final Promise promise; + private final Session.Listener listener; + +- private HTTP2ClientConnection(HTTP2Client client, ByteBufferPool byteBufferPool, Executor executor, EndPoint endpoint, Parser parser, ISession session, int bufferSize, Promise promise, Session.Listener listener) ++ private HTTP2ClientConnection(HTTP2Client client, ByteBufferPool byteBufferPool, Executor executor, EndPoint endpoint, ISession session, int bufferSize, Promise promise, Session.Listener listener) + { +- super(byteBufferPool, executor, endpoint, parser, session, bufferSize); ++ super(byteBufferPool, executor, endpoint, session, bufferSize); + this.client = client; + this.promise = promise; + this.listener = listener; +@@ -98,12 +107,52 @@ public class HTTP2ClientConnectionFactory implements ClientConnectionFactory + Map settings = listener.onPreface(getSession()); + if (settings == null) + settings = new HashMap<>(); +- settings.computeIfAbsent(SettingsFrame.INITIAL_WINDOW_SIZE, k -> client.getInitialStreamRecvWindow()); +- settings.computeIfAbsent(SettingsFrame.MAX_CONCURRENT_STREAMS, k -> client.getMaxConcurrentPushedStreams()); + +- Integer maxFrameLength = settings.get(SettingsFrame.MAX_FRAME_SIZE); +- if (maxFrameLength != null) +- getParser().setMaxFrameLength(maxFrameLength); ++ // Below we want to populate any settings to send to the server ++ // that have a different default than what prescribed by the RFC. ++ // Changing the configuration is done when the SETTINGS is sent. ++ ++ settings.compute(SettingsFrame.HEADER_TABLE_SIZE, (k, v) -> ++ { ++ if (v == null) ++ { ++ v = client.getMaxDecoderTableCapacity(); ++ if (v == HpackContext.DEFAULT_MAX_TABLE_CAPACITY) ++ v = null; ++ } ++ return v; ++ }); ++ settings.computeIfAbsent(SettingsFrame.MAX_CONCURRENT_STREAMS, k -> client.getMaxConcurrentPushedStreams()); ++ settings.compute(SettingsFrame.INITIAL_WINDOW_SIZE, (k, v) -> ++ { ++ if (v == null) ++ { ++ v = client.getInitialStreamRecvWindow(); ++ if (v == FlowControlStrategy.DEFAULT_WINDOW_SIZE) ++ v = null; ++ } ++ return v; ++ }); ++ settings.compute(SettingsFrame.MAX_FRAME_SIZE, (k, v) -> ++ { ++ if (v == null) ++ { ++ v = client.getMaxFrameSize(); ++ if (v == Frame.DEFAULT_MAX_LENGTH) ++ v = null; ++ } ++ return v; ++ }); ++ settings.compute(SettingsFrame.MAX_HEADER_LIST_SIZE, (k, v) -> ++ { ++ if (v == null) ++ { ++ v = client.getMaxResponseHeadersSize(); ++ if (v <= 0) ++ v = null; ++ } ++ return v; ++ }); + + PrefaceFrame prefaceFrame = new PrefaceFrame(); + SettingsFrame settingsFrame = new SettingsFrame(settings, false); +diff --git a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientSession.java b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientSession.java +index 2092d22..c756a0a 100644 +--- a/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientSession.java ++++ b/jetty-http2/http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientSession.java +@@ -29,6 +29,7 @@ import org.eclipse.jetty.http2.api.Stream; + import org.eclipse.jetty.http2.frames.HeadersFrame; + import org.eclipse.jetty.http2.frames.PushPromiseFrame; + import org.eclipse.jetty.http2.generator.Generator; ++import org.eclipse.jetty.http2.parser.Parser; + import org.eclipse.jetty.io.EndPoint; + import org.eclipse.jetty.util.Callback; + import org.eclipse.jetty.util.log.Log; +@@ -39,9 +40,16 @@ public class HTTP2ClientSession extends HTTP2Session + { + private static final Logger LOG = Log.getLogger(HTTP2ClientSession.class); + ++ @Deprecated + public HTTP2ClientSession(Scheduler scheduler, EndPoint endPoint, Generator generator, Session.Listener listener, FlowControlStrategy flowControl) + { +- super(scheduler, endPoint, generator, listener, flowControl, 1); ++ this(scheduler, endPoint, null, generator, listener, flowControl); ++ throw new UnsupportedOperationException(); ++ } ++ ++ public HTTP2ClientSession(Scheduler scheduler, EndPoint endPoint, Parser parser, Generator generator, Session.Listener listener, FlowControlStrategy flowControl) ++ { ++ super(scheduler, endPoint, parser, generator, listener, flowControl, 1); + } + + @Override +diff --git a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java +index 6f74337..99e4d65 100644 +--- a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java ++++ b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/HTTP2Test.java +@@ -25,6 +25,7 @@ import java.nio.charset.StandardCharsets; + import java.util.HashMap; + import java.util.Map; + import java.util.Random; ++import java.util.concurrent.CompletableFuture; + import java.util.concurrent.CountDownLatch; + import java.util.concurrent.ExecutionException; + import java.util.concurrent.TimeUnit; +@@ -39,6 +40,7 @@ import org.eclipse.jetty.http.HttpStatus; + import org.eclipse.jetty.http.HttpVersion; + import org.eclipse.jetty.http.MetaData; + import org.eclipse.jetty.http2.ErrorCode; ++import org.eclipse.jetty.http2.HTTP2Session; + import org.eclipse.jetty.http2.api.Session; + import org.eclipse.jetty.http2.api.Stream; + import org.eclipse.jetty.http2.api.server.ServerSessionListener; +@@ -48,10 +50,7 @@ import org.eclipse.jetty.http2.frames.HeadersFrame; + import org.eclipse.jetty.http2.frames.ResetFrame; + import org.eclipse.jetty.http2.frames.SettingsFrame; + import org.eclipse.jetty.http2.hpack.HpackException; +-import org.eclipse.jetty.http2.parser.RateControl; +-import org.eclipse.jetty.http2.parser.ServerParser; + import org.eclipse.jetty.http2.server.RawHTTP2ServerConnectionFactory; +-import org.eclipse.jetty.server.Connector; + import org.eclipse.jetty.server.HttpConfiguration; + import org.eclipse.jetty.util.BufferUtil; + import org.eclipse.jetty.util.Callback; +@@ -59,13 +58,17 @@ import org.eclipse.jetty.util.FuturePromise; + import org.eclipse.jetty.util.IO; + import org.eclipse.jetty.util.Jetty; + import org.eclipse.jetty.util.Promise; ++import org.eclipse.jetty.util.StringUtil; + import org.junit.jupiter.api.Test; + + import static org.hamcrest.MatcherAssert.assertThat; ++import static org.hamcrest.Matchers.containsString; ++import static org.hamcrest.Matchers.equalTo; + import static org.hamcrest.Matchers.instanceOf; + import static org.junit.jupiter.api.Assertions.assertEquals; + import static org.junit.jupiter.api.Assertions.assertFalse; + import static org.junit.jupiter.api.Assertions.assertNotNull; ++import static org.junit.jupiter.api.Assertions.assertNull; + import static org.junit.jupiter.api.Assertions.assertThrows; + import static org.junit.jupiter.api.Assertions.assertTrue; + +@@ -738,6 +741,7 @@ public class HTTP2Test extends AbstractTest + @Test + public void testGoAwayRespondedWithGoAway() throws Exception + { ++ CountDownLatch goAwayLatch = new CountDownLatch(1); + ServerSessionListener.Adapter serverListener = new ServerSessionListener.Adapter() + { + @Override +@@ -749,24 +753,15 @@ public class HTTP2Test extends AbstractTest + stream.getSession().close(ErrorCode.NO_ERROR.code, null, Callback.NOOP); + return null; + } +- }; +- CountDownLatch goAwayLatch = new CountDownLatch(1); +- RawHTTP2ServerConnectionFactory connectionFactory = new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), serverListener) +- { ++ + @Override +- protected ServerParser newServerParser(Connector connector, ServerParser.Listener listener, RateControl rateControl) ++ public void onGoAway(Session session, GoAwayFrame frame) + { +- return super.newServerParser(connector, new ServerParser.Listener.Wrapper(listener) +- { +- @Override +- public void onGoAway(GoAwayFrame frame) +- { +- super.onGoAway(frame); +- goAwayLatch.countDown(); +- } +- }, rateControl); ++ goAwayLatch.countDown(); + } + }; ++ ++ RawHTTP2ServerConnectionFactory connectionFactory = new RawHTTP2ServerConnectionFactory(new HttpConfiguration(), serverListener); + prepareServer(connectionFactory); + server.start(); + +@@ -893,6 +888,150 @@ public class HTTP2Test extends AbstractTest + assertTrue(resetLatch.await(5, TimeUnit.SECONDS)); + } + ++ @Test ++ public void testClientSendsLargeHeader() throws Exception ++ { ++ CountDownLatch settingsLatch = new CountDownLatch(2); ++ ++ CompletableFuture serverFailureFuture = new CompletableFuture<>(); ++ CompletableFuture serverCloseReasonFuture = new CompletableFuture<>(); ++ start(new ServerSessionListener.Adapter() ++ { ++ @Override ++ public void onSettings(Session session, SettingsFrame frame) ++ { ++ settingsLatch.countDown(); ++ } ++ ++ @Override ++ public void onFailure(Session session, Throwable failure) ++ { ++ serverFailureFuture.complete(failure); ++ } ++ ++ @Override ++ public void onClose(Session session, GoAwayFrame frame) ++ { ++ serverCloseReasonFuture.complete(frame.tryConvertPayload()); ++ } ++ }); ++ ++ CompletableFuture clientFailureFuture = new CompletableFuture<>(); ++ CompletableFuture clientCloseReasonFuture = new CompletableFuture<>(); ++ Session.Listener.Adapter listener = new Session.Listener.Adapter() ++ { ++ @Override ++ public void onSettings(Session session, SettingsFrame frame) ++ { ++ settingsLatch.countDown(); ++ } ++ ++ @Override ++ public void onFailure(Session session, Throwable failure) ++ { ++ clientFailureFuture.complete(failure); ++ } ++ ++ @Override ++ public void onClose(Session session, GoAwayFrame frame) ++ { ++ clientCloseReasonFuture.complete(frame.tryConvertPayload()); ++ } ++ }; ++ ++ HTTP2Session session = (HTTP2Session)newClient(listener); ++ assertTrue(settingsLatch.await(5, TimeUnit.SECONDS)); ++ session.getGenerator().getHpackEncoder().setMaxHeaderListSize(1024 * 1024); ++ ++ String value = StringUtil.stringFrom("x", 8 * 1024); ++ HttpFields requestFields = new HttpFields(); ++ requestFields.put("custom", value); ++ MetaData.Request metaData = newRequest("GET", requestFields); ++ HeadersFrame request = new HeadersFrame(metaData, null, true); ++ session.newStream(request, new FuturePromise<>(), new Stream.Listener.Adapter()); ++ ++ // Test failure and close reason on client. ++ String closeReason = clientCloseReasonFuture.get(5, TimeUnit.SECONDS); ++ assertThat(closeReason, equalTo("invalid_hpack_block")); ++ assertNull(clientFailureFuture.getNow(null)); ++ ++ // Test failure and close reason on server. ++ closeReason = serverCloseReasonFuture.get(5, TimeUnit.SECONDS); ++ assertThat(closeReason, equalTo("invalid_hpack_block")); ++ Throwable failure = serverFailureFuture.get(5, TimeUnit.SECONDS); ++ assertThat(failure, instanceOf(IOException.class)); ++ assertThat(failure.getMessage(), containsString("invalid_hpack_block")); ++ } ++ ++ @Test ++ public void testServerSendsLargeHeader() throws Exception ++ { ++ CompletableFuture serverFailureFuture = new CompletableFuture<>(); ++ CompletableFuture serverCloseReasonFuture = new CompletableFuture<>(); ++ start(new ServerSessionListener.Adapter() ++ { ++ @Override ++ public Stream.Listener onNewStream(Stream stream, HeadersFrame frame) ++ { ++ HTTP2Session session = (HTTP2Session)stream.getSession(); ++ session.getGenerator().getHpackEncoder().setMaxHeaderListSize(1024 * 1024); ++ ++ String value = StringUtil.stringFrom("x", 8 * 1024); ++ HttpFields fields = new HttpFields(); ++ fields.put("custom", value); ++ MetaData.Response response = new MetaData.Response(HttpVersion.HTTP_2, HttpStatus.OK_200, fields); ++ stream.headers(new HeadersFrame(stream.getId(), response, null, true), Callback.NOOP); ++ return null; ++ } ++ ++ @Override ++ public void onFailure(Session session, Throwable failure) ++ { ++ serverFailureFuture.complete(failure); ++ } ++ ++ @Override ++ public void onClose(Session session, GoAwayFrame frame) ++ { ++ serverCloseReasonFuture.complete(frame.tryConvertPayload()); ++ } ++ }); ++ ++ CompletableFuture clientFailureFuture = new CompletableFuture<>(); ++ CompletableFuture clientCloseReasonFuture = new CompletableFuture<>(); ++ Session.Listener.Adapter listener = new Session.Listener.Adapter() ++ { ++ @Override ++ public void onFailure(Session session, Throwable failure) ++ { ++ clientFailureFuture.complete(failure); ++ } ++ ++ @Override ++ public void onClose(Session session, GoAwayFrame frame) ++ { ++ clientCloseReasonFuture.complete(frame.tryConvertPayload()); ++ } ++ }; ++ ++ Session session = newClient(listener); ++ MetaData.Request metaData = newRequest("GET", new HttpFields()); ++ HeadersFrame request = new HeadersFrame(metaData, null, true); ++ session.newStream(request, new FuturePromise<>(), new Stream.Listener.Adapter()); ++ ++ // Test failure and close reason on server. ++ String closeReason = serverCloseReasonFuture.get(5, TimeUnit.SECONDS); ++ assertThat(closeReason, equalTo("invalid_hpack_block")); ++ assertNull(serverFailureFuture.getNow(null)); ++ ++ // Test failure and close reason on client. ++ closeReason = clientCloseReasonFuture.get(5, TimeUnit.SECONDS); ++ assertThat(closeReason, equalTo("invalid_hpack_block")); ++ Throwable failure = clientFailureFuture.get(5, TimeUnit.SECONDS); ++ assertThat(failure, instanceOf(IOException.class)); ++ assertThat(failure.getMessage(), containsString("invalid_hpack_block")); ++ } ++ + private static void sleep(long time) + { + try +diff --git a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PrefaceTest.java b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PrefaceTest.java +index 60906dd..c877810 100644 +--- a/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PrefaceTest.java ++++ b/jetty-http2/http2-client/src/test/java/org/eclipse/jetty/http2/client/PrefaceTest.java +@@ -35,7 +35,6 @@ import java.util.concurrent.CountDownLatch; + import java.util.concurrent.TimeUnit; + import java.util.concurrent.atomic.AtomicBoolean; + import java.util.concurrent.atomic.AtomicReference; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http.HttpFields; + import org.eclipse.jetty.http.HttpStatus; +@@ -169,15 +168,15 @@ public class PrefaceTest extends AbstractTest + socket.write(buffers.toArray(new ByteBuffer[buffers.size()])); + + Queue settings = new ArrayDeque<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onSettings(SettingsFrame frame) + { + settings.offer(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + ByteBuffer buffer = byteBufferPool.acquire(1024, true); + while (true) +@@ -302,7 +301,8 @@ public class PrefaceTest extends AbstractTest + + CountDownLatch clientSettingsLatch = new CountDownLatch(1); + AtomicBoolean responded = new AtomicBoolean(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onSettings(SettingsFrame frame) +@@ -319,8 +319,7 @@ public class PrefaceTest extends AbstractTest + if (frame.isEndStream()) + responded.set(true); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // HTTP/2 parsing. + while (true) +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java +index 4b96925..a414299 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java +@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicLong; + + import org.eclipse.jetty.http2.frames.DataFrame; + import org.eclipse.jetty.http2.parser.Parser; ++import org.eclipse.jetty.http2.parser.ServerParser; + import org.eclipse.jetty.io.AbstractConnection; + import org.eclipse.jetty.io.ByteBufferPool; + import org.eclipse.jetty.io.EndPoint; +@@ -52,23 +53,26 @@ public class HTTP2Connection extends AbstractConnection implements WriteFlusher. + private final HTTP2Producer producer = new HTTP2Producer(); + private final AtomicLong bytesIn = new AtomicLong(); + private final ByteBufferPool byteBufferPool; +- private final Parser parser; + private final ISession session; + private final int bufferSize; + private final ExecutionStrategy strategy; + ++ @Deprecated + public HTTP2Connection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, Parser parser, ISession session, int bufferSize) ++ { ++ this(byteBufferPool, executor, endPoint, session, bufferSize); ++ } ++ ++ public HTTP2Connection(ByteBufferPool byteBufferPool, Executor executor, EndPoint endPoint, ISession session, int bufferSize) + { + super(endPoint, executor); + this.byteBufferPool = byteBufferPool; +- this.parser = parser; + this.session = session; + this.bufferSize = bufferSize; + if (PEC_MODE) + executor = new TryExecutor.NoTryExecutor(executor); + this.strategy = new EatWhatYouKill(producer, executor); + LifeCycle.start(strategy); +- parser.init(ParserListener::new); + } + + @Override +@@ -104,7 +108,8 @@ public class HTTP2Connection extends AbstractConnection implements WriteFlusher. + + protected Parser getParser() + { +- return parser; ++ // TODO: can we downcast. ++ return ((HTTP2Session)session).getParser(); + } + + protected void setInputBuffer(ByteBuffer buffer) +@@ -112,6 +117,11 @@ public class HTTP2Connection extends AbstractConnection implements WriteFlusher. + producer.setInputBuffer(buffer); + } + ++ public Parser.Listener wrapParserListener(Parser.Listener listener) ++ { ++ return new ParserListener(listener); ++ } ++ + @Override + public void onOpen() + { +@@ -258,7 +268,7 @@ public class HTTP2Connection extends AbstractConnection implements WriteFlusher. + { + while (networkBuffer.hasRemaining()) + { +- parser.parse(networkBuffer.getBuffer()); ++ getParser().parse(networkBuffer.getBuffer()); + if (failed) + return null; + } +@@ -378,7 +388,7 @@ public class HTTP2Connection extends AbstractConnection implements WriteFlusher. + { + private ParserListener(Parser.Listener listener) + { +- super(listener); ++ super(listener == null ? new ServerParser.Listener.Adapter() : listener); + } + + @Override +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java +index 3fba40e..a1c5ace 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java +@@ -55,6 +55,7 @@ import org.eclipse.jetty.http2.frames.SettingsFrame; + import org.eclipse.jetty.http2.frames.StreamFrame; + import org.eclipse.jetty.http2.frames.WindowUpdateFrame; + import org.eclipse.jetty.http2.generator.Generator; ++import org.eclipse.jetty.http2.hpack.HpackEncoder; + import org.eclipse.jetty.http2.hpack.HpackException; + import org.eclipse.jetty.http2.parser.Parser; + import org.eclipse.jetty.io.ByteBufferPool; +@@ -94,6 +95,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + private final AtomicLong bytesWritten = new AtomicLong(); + private final Scheduler scheduler; + private final EndPoint endPoint; ++ private final Parser parser; + private final Generator generator; + private final Session.Listener listener; + private final FlowControlStrategy flowControl; +@@ -103,12 +105,21 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + private long streamIdleTimeout; + private int initialSessionRecvWindow; + private int writeThreshold; ++ private int maxEncoderTableCapacity; + private boolean pushEnabled; + ++ @Deprecated + public HTTP2Session(Scheduler scheduler, EndPoint endPoint, Generator generator, Session.Listener listener, FlowControlStrategy flowControl, int initialStreamId) ++ { ++ this(scheduler, endPoint, null, generator, listener, flowControl, initialStreamId); ++ throw new UnsupportedOperationException(); ++ } ++ ++ public HTTP2Session(Scheduler scheduler, EndPoint endPoint, Parser parser, Generator generator, Session.Listener listener, FlowControlStrategy flowControl, int initialStreamId) + { + this.scheduler = scheduler; + this.endPoint = endPoint; ++ this.parser = parser; + this.generator = generator; + this.listener = listener; + this.flowControl = flowControl; +@@ -205,11 +216,27 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + this.writeThreshold = writeThreshold; + } + ++ @ManagedAttribute("The HPACK encoder dynamic table maximum capacity") ++ public int getMaxEncoderTableCapacity() ++ { ++ return maxEncoderTableCapacity; ++ } ++ ++ public void setMaxEncoderTableCapacity(int maxEncoderTableCapacity) ++ { ++ this.maxEncoderTableCapacity = maxEncoderTableCapacity; ++ } ++ + public EndPoint getEndPoint() + { + return endPoint; + } + ++ public Parser getParser() ++ { ++ return parser; ++ } ++ + public Generator getGenerator() + { + return generator; +@@ -346,8 +373,20 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + if (frame.isReply()) + return; + +- // Iterate over all settings +- for (Map.Entry entry : frame.getSettings().entrySet()) ++ Map settings = frame.getSettings(); ++ configure(settings, false); ++ notifySettings(this, frame); ++ ++ if (reply) ++ { ++ SettingsFrame replyFrame = new SettingsFrame(Collections.emptyMap(), true); ++ settings(replyFrame, Callback.NOOP); ++ } ++ } ++ ++ private void configure(Map settings, boolean local) ++ { ++ for (Map.Entry entry : settings.entrySet()) + { + int key = entry.getKey(); + int value = entry.getValue(); +@@ -356,8 +395,17 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + case SettingsFrame.HEADER_TABLE_SIZE: + { + if (LOG.isDebugEnabled()) +- LOG.debug("Updating HPACK header table size to {} for {}", value, this); +- generator.setHeaderTableSize(value); ++ LOG.debug("Updating HPACK {} max table capacity to {} for {}", local ? "decoder" : "encoder", value, this); ++ if (local) ++ { ++ parser.getHpackDecoder().setMaxTableCapacity(value); ++ } ++ else ++ { ++ HpackEncoder hpackEncoder = generator.getHpackEncoder(); ++ hpackEncoder.setMaxTableCapacity(value); ++ hpackEncoder.setTableCapacity(Math.min(value, getMaxEncoderTableCapacity())); ++ } + break; + } + case SettingsFrame.ENABLE_PUSH: +@@ -371,29 +419,38 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + case SettingsFrame.MAX_CONCURRENT_STREAMS: + { + if (LOG.isDebugEnabled()) +- LOG.debug("Updating max local concurrent streams to {} for {}", value, this); +- maxLocalStreams = value; ++ LOG.debug("Updating max {} concurrent streams to {} for {}", local ? "remote" : "local", value, this); ++ if (local) ++ maxRemoteStreams = value; ++ else ++ maxLocalStreams = value; + break; + } + case SettingsFrame.INITIAL_WINDOW_SIZE: + { + if (LOG.isDebugEnabled()) + LOG.debug("Updating initial stream window size to {} for {}", value, this); +- flowControl.updateInitialStreamWindow(this, value, false); ++ flowControl.updateInitialStreamWindow(this, value, local); + break; + } + case SettingsFrame.MAX_FRAME_SIZE: + { + if (LOG.isDebugEnabled()) +- LOG.debug("Updating max frame size to {} for {}", value, this); +- generator.setMaxFrameSize(value); ++ LOG.debug("Updating {} max frame size to {} for {}", local ? "parser" : "generator", value, this); ++ if (local) ++ parser.setMaxFrameSize(value); ++ else ++ generator.setMaxFrameSize(value); + break; + } + case SettingsFrame.MAX_HEADER_LIST_SIZE: + { + if (LOG.isDebugEnabled()) +- LOG.debug("Updating max header list size to {} for {}", value, this); +- generator.setMaxHeaderListSize(value); ++ LOG.debug("Updating {} max header list size to {} for {}", local ? "decoder" : "encoder", value, this); ++ if (local) ++ parser.getHpackDecoder().setMaxHeaderListSize(value); ++ else ++ generator.getHpackEncoder().setMaxHeaderListSize(value); + break; + } + default: +@@ -404,13 +461,6 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + } + } + } +- notifySettings(this, frame); +- +- if (reply) +- { +- SettingsFrame replyFrame = new SettingsFrame(Collections.emptyMap(), true); +- settings(replyFrame, Callback.NOOP); +- } + } + + @Override +@@ -486,6 +536,21 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + } + } + ++ @Override ++ public void onWindowUpdate(IStream stream, WindowUpdateFrame frame) ++ { ++ // WindowUpdateFrames arrive concurrently with writes. ++ // Increasing (or reducing) the window size concurrently ++ // with writes requires coordination with the flusher, that ++ // decides how many frames to write depending on the available ++ // window sizes. If the window sizes vary concurrently, the ++ // flusher may take non-optimal or wrong decisions. ++ // Here, we "queue" window updates to the flusher, so it will ++ // be the only component responsible for window updates, for ++ // both increments and reductions. ++ flusher.window(stream, frame); ++ } ++ + @Override + public void onStreamFailure(int streamId, int error, String reason) + { +@@ -888,21 +953,6 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + return recvWindow.getAndAdd(delta); + } + +- @Override +- public void onWindowUpdate(IStream stream, WindowUpdateFrame frame) +- { +- // WindowUpdateFrames arrive concurrently with writes. +- // Increasing (or reducing) the window size concurrently +- // with writes requires coordination with the flusher, that +- // decides how many frames to write depending on the available +- // window sizes. If the window sizes vary concurrently, the +- // flusher may take non-optimal or wrong decisions. +- // Here, we "queue" window updates to the flusher, so it will +- // be the only component responsible for window updates, for +- // both increments and reductions. +- flusher.window(stream, frame); +- } +- + @Override + @ManagedAttribute(value = "Whether HTTP/2 push is enabled", readonly = true) + public boolean isPushEnabled() +@@ -1005,7 +1055,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + return lastRemoteStreamId.get(); + } + +- private void updateLastRemoteStreamId(int streamId) ++ protected void updateLastRemoteStreamId(int streamId) + { + Atomics.updateMax(lastRemoteStreamId, streamId); + } +@@ -1208,9 +1258,8 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + case SETTINGS: + { + SettingsFrame settingsFrame = (SettingsFrame)frame; +- Integer initialWindow = settingsFrame.getSettings().get(SettingsFrame.INITIAL_WINDOW_SIZE); +- if (initialWindow != null) +- flowControl.updateInitialStreamWindow(HTTP2Session.this, initialWindow, true); ++ if (!settingsFrame.isReply()) ++ configure(settingsFrame.getSettings(), true); + break; + } + default: +@@ -1407,6 +1456,8 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + @Override + public void failed(Throwable x) + { ++ if (LOG.isDebugEnabled()) ++ LOG.debug("OnReset failed", x); + complete(); + } + +@@ -1424,14 +1475,15 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + + /** + *

The HTTP/2 specification requires that stream ids are monotonically increasing, +- * see https://tools.ietf.org/html/rfc7540#section-5.1.1.

++ * see RFC 7540, 5.1.1.

+ *

This implementation uses a queue to atomically reserve a stream id and claim + * a slot in the queue; the slot is then assigned the entries to write.

+ *

Concurrent threads push slots in the queue but only one thread flushes + * the slots, up to the slot that has a non-null entries to write, therefore + * guaranteeing that frames are sent strictly in their stream id order.

+ *

This class also coordinates the creation of streams with the close of +- * the session, see https://tools.ietf.org/html/rfc7540#section-6.8.

++ * the session, see ++ * RFC 7540, 6.8.

+ */ + private class StreamsState + { +@@ -2168,7 +2220,7 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + if (flushing == null) + flushing = thread; + else if (flushing != thread) +- return; // another thread is flushing ++ return; // Another thread is flushing. + + Slot slot = slots.peek(); + entries = slot == null ? null : slot.entries; +@@ -2176,7 +2228,8 @@ public abstract class HTTP2Session extends ContainerLifeCycle implements ISessio + if (entries == null) + { + flushing = null; +- break; // No more slots or null entries, so we may iterate on the flusher ++ // No more slots or null entries, so we may iterate on the flusher. ++ break; + } + + slots.poll(); +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/Generator.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/Generator.java +index 97f9aea..b4c3c27 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/Generator.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/generator/Generator.java +@@ -35,15 +35,21 @@ public class Generator + + public Generator(ByteBufferPool byteBufferPool) + { +- this(byteBufferPool, 4096, 0); ++ this(byteBufferPool, 0); + } + ++ @Deprecated + public Generator(ByteBufferPool byteBufferPool, int maxDynamicTableSize, int maxHeaderBlockFragment) ++ { ++ this(byteBufferPool, maxHeaderBlockFragment); ++ } ++ ++ public Generator(ByteBufferPool byteBufferPool, int maxHeaderBlockFragment) + { + this.byteBufferPool = byteBufferPool; + + headerGenerator = new HeaderGenerator(); +- hpackEncoder = new HpackEncoder(maxDynamicTableSize); ++ hpackEncoder = new HpackEncoder(); + + this.generators = new FrameGenerator[FrameType.values().length]; + this.generators[FrameType.HEADERS.getType()] = new HeadersGenerator(headerGenerator, hpackEncoder, maxHeaderBlockFragment); +@@ -66,14 +72,21 @@ public class Generator + return byteBufferPool; + } + ++ public HpackEncoder getHpackEncoder() ++ { ++ return hpackEncoder; ++ } ++ ++ @Deprecated + public void setValidateHpackEncoding(boolean validateEncoding) + { +- hpackEncoder.setValidateEncoding(validateEncoding); ++ getHpackEncoder().setValidateEncoding(validateEncoding); + } + +- public void setHeaderTableSize(int headerTableSize) ++ @Deprecated ++ public void setHeaderTableSize(int maxTableSize) + { +- hpackEncoder.setRemoteMaxDynamicTableSize(headerTableSize); ++ getHpackEncoder().setTableCapacity(maxTableSize); + } + + public void setMaxFrameSize(int maxFrameSize) +@@ -91,8 +104,9 @@ public class Generator + return dataGenerator.generate(lease, frame, maxLength); + } + ++ @Deprecated + public void setMaxHeaderListSize(int value) + { +- hpackEncoder.setMaxHeaderListSize(value); ++ getHpackEncoder().setMaxHeaderListSize(value); + } + } +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockParser.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockParser.java +index 48becb1..848864d 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockParser.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockParser.java +@@ -50,6 +50,11 @@ public class HeaderBlockParser + this.notifier = notifier; + } + ++ public int getMaxHeaderListSize() ++ { ++ return hpackDecoder.getMaxHeaderListSize(); ++ } ++ + /** + * Parses @{code blockLength} HPACK bytes from the given {@code buffer}. + * +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeadersBodyParser.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeadersBodyParser.java +index e222420..909d49f 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeadersBodyParser.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeadersBodyParser.java +@@ -194,6 +194,10 @@ public class HeadersBodyParser extends BodyParser + { + if (hasFlag(Flags.END_HEADERS)) + { ++ int maxLength = headerBlockParser.getMaxHeaderListSize(); ++ if (maxLength > 0 && length > maxLength) ++ return connectionFailure(buffer, ErrorCode.REFUSED_STREAM_ERROR.code, "invalid_headers_frame"); ++ + MetaData metaData = headerBlockParser.parse(buffer, length); + if (metaData == HeaderBlockParser.SESSION_FAILURE) + return false; +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/Parser.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/Parser.java +index 5e2dfd0..1d727f7 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/Parser.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/Parser.java +@@ -49,33 +49,47 @@ public class Parser + private static final Logger LOG = Log.getLogger(Parser.class); + + private final ByteBufferPool byteBufferPool; +- private final Listener listener; + private final HeaderParser headerParser; + private final HpackDecoder hpackDecoder; + private final BodyParser[] bodyParsers; ++ private Listener listener; + private UnknownBodyParser unknownBodyParser; +- private int maxFrameLength = Frame.DEFAULT_MAX_LENGTH; ++ private int maxFrameSize = Frame.DEFAULT_MAX_LENGTH; + private int maxSettingsKeys = SettingsFrame.DEFAULT_MAX_KEYS; + private boolean continuation; + private State state = State.HEADER; + ++ @Deprecated + public Parser(ByteBufferPool byteBufferPool, Listener listener, int maxDynamicTableSize, int maxHeaderSize) + { +- this(byteBufferPool, listener, maxDynamicTableSize, maxHeaderSize, RateControl.NO_RATE_CONTROL); ++ this(byteBufferPool, maxHeaderSize, RateControl.NO_RATE_CONTROL); + } + +- public Parser(ByteBufferPool byteBufferPool, Listener listener, int maxDynamicTableSize, int maxHeaderSize, RateControl rateControl) ++ public Parser(ByteBufferPool byteBufferPool, int maxHeaderSize) ++ { ++ this(byteBufferPool, maxHeaderSize, RateControl.NO_RATE_CONTROL); ++ } ++ ++ public Parser(ByteBufferPool byteBufferPool, int maxHeaderSize, RateControl rateControl) + { + this.byteBufferPool = byteBufferPool; +- this.listener = listener; + this.headerParser = new HeaderParser(rateControl == null ? RateControl.NO_RATE_CONTROL : rateControl); +- this.hpackDecoder = new HpackDecoder(maxDynamicTableSize, maxHeaderSize); ++ this.hpackDecoder = new HpackDecoder(maxHeaderSize); + this.bodyParsers = new BodyParser[FrameType.values().length]; + } + ++ @Deprecated + public void init(UnaryOperator wrapper) + { +- Listener listener = wrapper.apply(this.listener); ++ Listener listener = wrapper.apply(new Listener.Adapter()); ++ init(listener); ++ } ++ ++ public void init(Listener listener) ++ { ++ if (this.listener != null) ++ throw new IllegalStateException("Invalid parser initialization"); ++ this.listener = listener; + unknownBodyParser = new UnknownBodyParser(headerParser, listener); + HeaderBlockParser headerBlockParser = new HeaderBlockParser(headerParser, byteBufferPool, hpackDecoder, unknownBodyParser); + HeaderBlockFragments headerBlockFragments = new HeaderBlockFragments(hpackDecoder.getMaxHeaderListSize()); +@@ -91,6 +105,16 @@ public class Parser + bodyParsers[FrameType.CONTINUATION.getType()] = new ContinuationBodyParser(headerParser, listener, headerBlockParser, headerBlockFragments); + } + ++ protected Listener getListener() ++ { ++ return listener; ++ } ++ ++ public HpackDecoder getHpackDecoder() ++ { ++ return hpackDecoder; ++ } ++ + private void reset() + { + headerParser.reset(); +@@ -151,7 +175,7 @@ public class Parser + if (LOG.isDebugEnabled()) + LOG.debug("Parsed {} frame header from {}@{}", headerParser, buffer, Integer.toHexString(buffer.hashCode())); + +- if (headerParser.getLength() > getMaxFrameLength()) ++ if (headerParser.getLength() > getMaxFrameSize()) + return connectionFailure(buffer, ErrorCode.FRAME_SIZE_ERROR, "invalid_frame_length"); + + FrameType frameType = FrameType.from(getFrameType()); +@@ -219,14 +243,26 @@ public class Parser + return headerParser.hasFlag(bit); + } + ++ @Deprecated + public int getMaxFrameLength() + { +- return maxFrameLength; ++ return getMaxFrameSize(); ++ } ++ ++ @Deprecated ++ public void setMaxFrameLength(int maxFrameSize) ++ { ++ setMaxFrameSize(maxFrameSize); ++ } ++ ++ public int getMaxFrameSize() ++ { ++ return maxFrameSize; + } + +- public void setMaxFrameLength(int maxFrameLength) ++ public void setMaxFrameSize(int maxFrameSize) + { +- this.maxFrameLength = maxFrameLength; ++ this.maxFrameSize = maxFrameSize; + } + + public int getMaxSettingsKeys() +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PushPromiseBodyParser.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PushPromiseBodyParser.java +index f02107d..7049e03 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PushPromiseBodyParser.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/PushPromiseBodyParser.java +@@ -121,6 +121,10 @@ public class PushPromiseBodyParser extends BodyParser + } + case HEADERS: + { ++ int maxLength = headerBlockParser.getMaxHeaderListSize(); ++ if (maxLength > 0 && length > maxLength) ++ return connectionFailure(buffer, ErrorCode.REFUSED_STREAM_ERROR.code, "invalid_headers_frame"); ++ + MetaData metaData = headerBlockParser.parse(buffer, length); + if (metaData == HeaderBlockParser.SESSION_FAILURE) + return false; +diff --git a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ServerParser.java b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ServerParser.java +index c38d69b..e5743a7 100644 +--- a/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ServerParser.java ++++ b/jetty-http2/http2-common/src/main/java/org/eclipse/jetty/http2/parser/ServerParser.java +@@ -32,15 +32,30 @@ public class ServerParser extends Parser + { + private static final Logger LOG = Log.getLogger(ServerParser.class); + +- private final Listener listener; +- private final PrefaceParser prefaceParser; ++ private PrefaceParser prefaceParser; + private State state = State.PREFACE; + private boolean notifyPreface = true; + ++ @Deprecated + public ServerParser(ByteBufferPool byteBufferPool, Listener listener, int maxDynamicTableSize, int maxHeaderSize, RateControl rateControl) + { +- super(byteBufferPool, listener, maxDynamicTableSize, maxHeaderSize, rateControl); +- this.listener = listener; ++ this(byteBufferPool, maxHeaderSize, rateControl); ++ } ++ ++ public ServerParser(ByteBufferPool byteBufferPool, int maxHeaderSize) ++ { ++ super(byteBufferPool, maxHeaderSize); ++ } ++ ++ public ServerParser(ByteBufferPool byteBufferPool, int maxHeaderSize, RateControl rateControl) ++ { ++ super(byteBufferPool, maxHeaderSize, rateControl); ++ } ++ ++ @Override ++ public void init(Parser.Listener listener) ++ { ++ super.init(listener); + this.prefaceParser = new PrefaceParser(listener); + } + +@@ -137,9 +152,23 @@ public class ServerParser extends Parser + + private void notifyPreface() + { ++ Parser.Listener listener = getListener(); + try + { +- listener.onPreface(); ++ while (true) ++ { ++ if (listener instanceof ServerParser.Listener) ++ { ++ ((ServerParser.Listener)listener).onPreface(); ++ break; ++ } ++ ++ // Unwrap to try and find a ServerParser.Listener. ++ if (listener instanceof Parser.Listener.Wrapper) ++ listener = ((Parser.Listener.Wrapper)listener).getParserListener(); ++ else ++ break; ++ } + } + catch (Throwable x) + { +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ContinuationParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ContinuationParseTest.java +index 54a7cde..10fac90 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ContinuationParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ContinuationParseTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; +-import java.util.function.UnaryOperator; + import java.util.concurrent.atomic.AtomicBoolean; + import java.util.stream.IntStream; + +@@ -55,7 +54,8 @@ public class ContinuationParseTest + HeadersGenerator generator = new HeadersGenerator(new HeaderGenerator(), new HpackEncoder()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onHeaders(HeadersFrame frame) +@@ -68,8 +68,7 @@ public class ContinuationParseTest + { + frames.add(new HeadersFrame(null, null, false)); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure the parser is properly reset. + for (int i = 0; i < 2; ++i) +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/DataGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/DataGenerateParseTest.java +index 87f8ffa..78a6a5e 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/DataGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/DataGenerateParseTest.java +@@ -22,7 +22,6 @@ import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; + import java.util.Random; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.generator.DataGenerator; + import org.eclipse.jetty.http2.generator.HeaderGenerator; +@@ -93,15 +92,15 @@ public class DataGenerateParseTest + DataGenerator generator = new DataGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onData(DataFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure generator and parser are properly reset. + for (int i = 0; i < 2; ++i) +@@ -133,15 +132,15 @@ public class DataGenerateParseTest + DataGenerator generator = new DataGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onData(DataFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure generator and parser are properly reset. + for (int i = 0; i < 2; ++i) +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/FrameFloodTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/FrameFloodTest.java +index 2a1b187..613259b 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/FrameFloodTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/FrameFloodTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.time.Duration; + import java.util.concurrent.atomic.AtomicBoolean; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http.HttpVersion; + import org.eclipse.jetty.http.MetaData; +@@ -153,15 +152,15 @@ public class FrameFloodTest + private void testFrameFlood(byte[] preamble, byte[] bytes) + { + AtomicBoolean failed = new AtomicBoolean(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096, new WindowRateControl(8, Duration.ofSeconds(1))); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) + { + failed.set(true); + } +- }, 4096, 8192, new WindowRateControl(8, Duration.ofSeconds(1))); +- parser.init(UnaryOperator.identity()); ++ }); + + if (preamble != null) + { +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/GoAwayGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/GoAwayGenerateParseTest.java +index 115a4d1..da88cd9 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/GoAwayGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/GoAwayGenerateParseTest.java +@@ -22,7 +22,6 @@ import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; + import java.util.Random; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.generator.GoAwayGenerator; + import org.eclipse.jetty.http2.generator.HeaderGenerator; +@@ -45,15 +44,15 @@ public class GoAwayGenerateParseTest + GoAwayGenerator generator = new GoAwayGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onGoAway(GoAwayFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int lastStreamId = 13; + int error = 17; +@@ -87,15 +86,15 @@ public class GoAwayGenerateParseTest + GoAwayGenerator generator = new GoAwayGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onGoAway(GoAwayFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int lastStreamId = 13; + int error = 17; +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersGenerateParseTest.java +index 83f3c45..65a12d6 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersGenerateParseTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http.HostPortHttpField; + import org.eclipse.jetty.http.HttpField; +@@ -57,15 +56,15 @@ public class HeadersGenerateParseTest + MetaData.Request metaData = new MetaData.Request("GET", HttpScheme.HTTP, new HostPortHttpField("localhost:8080"), "/path", HttpVersion.HTTP_2, fields); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onHeaders(HeadersFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure generator and parser are properly reset. + for (int i = 0; i < 2; ++i) +@@ -110,15 +109,15 @@ public class HeadersGenerateParseTest + HeadersGenerator generator = new HeadersGenerator(new HeaderGenerator(), new HpackEncoder()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onHeaders(HeadersFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure generator and parser are properly reset. + for (int i = 0; i < 2; ++i) +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/MaxFrameSizeParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/MaxFrameSizeParseTest.java +index 61da49d..3d2ae30 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/MaxFrameSizeParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/MaxFrameSizeParseTest.java +@@ -20,7 +20,6 @@ package org.eclipse.jetty.http2.frames; + + import java.nio.ByteBuffer; + import java.util.concurrent.atomic.AtomicInteger; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.ErrorCode; + import org.eclipse.jetty.http2.parser.Parser; +@@ -40,16 +39,16 @@ public class MaxFrameSizeParseTest + int maxFrameLength = Frame.DEFAULT_MAX_LENGTH + 16; + + AtomicInteger failure = new AtomicInteger(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.setMaxFrameSize(maxFrameLength); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) + { + failure.set(error); + } +- }, 4096, 8192); +- parser.setMaxFrameLength(maxFrameLength); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure the parser is properly reset. + for (int i = 0; i < 2; ++i) +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PingGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PingGenerateParseTest.java +index b11d391..4db9267 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PingGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PingGenerateParseTest.java +@@ -22,7 +22,6 @@ import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; + import java.util.Random; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.generator.HeaderGenerator; + import org.eclipse.jetty.http2.generator.PingGenerator; +@@ -45,15 +44,15 @@ public class PingGenerateParseTest + PingGenerator generator = new PingGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPing(PingFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + byte[] payload = new byte[8]; + new Random().nextBytes(payload); +@@ -86,15 +85,15 @@ public class PingGenerateParseTest + PingGenerator generator = new PingGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPing(PingFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + byte[] payload = new byte[8]; + new Random().nextBytes(payload); +@@ -127,15 +126,15 @@ public class PingGenerateParseTest + PingGenerator generator = new PingGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPing(PingFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + ByteBufferPool.Lease lease = new ByteBufferPool.Lease(byteBufferPool); + PingFrame ping = new PingFrame(System.nanoTime(), true); +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PriorityGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PriorityGenerateParseTest.java +index 2aee4eb..5bc2de8 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PriorityGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PriorityGenerateParseTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.generator.HeaderGenerator; + import org.eclipse.jetty.http2.generator.PriorityGenerator; +@@ -42,15 +41,15 @@ public class PriorityGenerateParseTest + PriorityGenerator generator = new PriorityGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPriority(PriorityFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int parentStreamId = 17; +@@ -87,15 +86,15 @@ public class PriorityGenerateParseTest + PriorityGenerator generator = new PriorityGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPriority(PriorityFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int parentStreamId = 17; +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PushPromiseGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PushPromiseGenerateParseTest.java +index cb2323e..27e772e 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PushPromiseGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/PushPromiseGenerateParseTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http.HostPortHttpField; + import org.eclipse.jetty.http.HttpField; +@@ -50,15 +49,15 @@ public class PushPromiseGenerateParseTest + PushPromiseGenerator generator = new PushPromiseGenerator(new HeaderGenerator(), new HpackEncoder()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPushPromise(PushPromiseFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int promisedStreamId = 17; +@@ -103,15 +102,15 @@ public class PushPromiseGenerateParseTest + PushPromiseGenerator generator = new PushPromiseGenerator(new HeaderGenerator(), new HpackEncoder()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onPushPromise(PushPromiseFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int promisedStreamId = 17; +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ResetGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ResetGenerateParseTest.java +index fca126e..6318a18 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ResetGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/ResetGenerateParseTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.generator.HeaderGenerator; + import org.eclipse.jetty.http2.generator.ResetGenerator; +@@ -42,15 +41,15 @@ public class ResetGenerateParseTest + ResetGenerator generator = new ResetGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onReset(ResetFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int error = 17; +@@ -83,15 +82,15 @@ public class ResetGenerateParseTest + ResetGenerator generator = new ResetGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onReset(ResetFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int error = 17; +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/SettingsGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/SettingsGenerateParseTest.java +index 4cc6a45..30455b1 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/SettingsGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/SettingsGenerateParseTest.java +@@ -25,7 +25,6 @@ import java.util.HashMap; + import java.util.List; + import java.util.Map; + import java.util.concurrent.atomic.AtomicInteger; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.ErrorCode; + import org.eclipse.jetty.http2.generator.HeaderGenerator; +@@ -77,15 +76,15 @@ public class SettingsGenerateParseTest + SettingsGenerator generator = new SettingsGenerator(new HeaderGenerator()); + + List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onSettings(SettingsFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure generator and parser are properly reset. + for (int i = 0; i < 2; ++i) +@@ -112,15 +111,15 @@ public class SettingsGenerateParseTest + SettingsGenerator generator = new SettingsGenerator(new HeaderGenerator()); + + AtomicInteger errorRef = new AtomicInteger(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) + { + errorRef.set(error); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + Map settings1 = new HashMap<>(); + settings1.put(13, 17); +@@ -147,15 +146,15 @@ public class SettingsGenerateParseTest + SettingsGenerator generator = new SettingsGenerator(new HeaderGenerator()); + + List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onSettings(SettingsFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + Map settings1 = new HashMap<>(); + int key = 13; +@@ -192,17 +191,17 @@ public class SettingsGenerateParseTest + SettingsGenerator generator = new SettingsGenerator(new HeaderGenerator()); + + AtomicInteger errorRef = new AtomicInteger(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ int maxSettingsKeys = 32; ++ parser.setMaxSettingsKeys(maxSettingsKeys); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) + { + errorRef.set(error); + } +- }, 4096, 8192); +- int maxSettingsKeys = 32; +- parser.setMaxSettingsKeys(maxSettingsKeys); +- parser.init(UnaryOperator.identity()); ++ }); + + Map settings = new HashMap<>(); + for (int i = 0; i < maxSettingsKeys + 1; ++i) +@@ -232,10 +231,10 @@ public class SettingsGenerateParseTest + int maxSettingsKeys = pairs / 2; + + AtomicInteger errorRef = new AtomicInteger(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter(), 4096, 8192); ++ Parser parser = new Parser(byteBufferPool, 4096); + parser.setMaxSettingsKeys(maxSettingsKeys); +- parser.setMaxFrameLength(Frame.DEFAULT_MAX_LENGTH); +- parser.init(listener -> new Parser.Listener.Wrapper(listener) ++ parser.setMaxFrameSize(Frame.DEFAULT_MAX_LENGTH); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) +@@ -273,17 +272,17 @@ public class SettingsGenerateParseTest + SettingsGenerator generator = new SettingsGenerator(new HeaderGenerator()); + + AtomicInteger errorRef = new AtomicInteger(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ int maxSettingsKeys = 32; ++ parser.setMaxSettingsKeys(maxSettingsKeys); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) + { + errorRef.set(error); + } +- }, 4096, 8192); +- int maxSettingsKeys = 32; +- parser.setMaxSettingsKeys(maxSettingsKeys); +- parser.init(UnaryOperator.identity()); ++ }); + + Map settings = new HashMap<>(); + settings.put(13, 17); +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/UnknownParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/UnknownParseTest.java +index a19abf2..0c1079c 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/UnknownParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/UnknownParseTest.java +@@ -22,7 +22,6 @@ import java.nio.ByteBuffer; + import java.util.concurrent.atomic.AtomicBoolean; + import java.util.concurrent.atomic.AtomicInteger; + import java.util.function.Function; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.ErrorCode; + import org.eclipse.jetty.http2.parser.Parser; +@@ -53,8 +52,8 @@ public class UnknownParseTest + public void testInvalidFrameSize() + { + AtomicInteger failure = new AtomicInteger(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter(), 4096, 8192); +- parser.init(listener -> new Parser.Listener.Wrapper(listener) ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) +@@ -62,7 +61,7 @@ public class UnknownParseTest + failure.set(error); + } + }); +- parser.setMaxFrameLength(Frame.DEFAULT_MAX_LENGTH); ++ parser.setMaxFrameSize(Frame.DEFAULT_MAX_LENGTH); + + // 0x4001 == 16385 which is > Frame.DEFAULT_MAX_LENGTH. + byte[] bytes = new byte[]{0, 0x40, 0x01, 64, 0, 0, 0, 0, 0}; +@@ -78,15 +77,15 @@ public class UnknownParseTest + private void testParse(Function fn) + { + AtomicBoolean failure = new AtomicBoolean(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onConnectionFailure(int error, String reason) + { + failure.set(true); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + // Iterate a few times to be sure the parser is properly reset. + for (int i = 0; i < 2; ++i) +diff --git a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/WindowUpdateGenerateParseTest.java b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/WindowUpdateGenerateParseTest.java +index ab3a39d..905603f 100644 +--- a/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/WindowUpdateGenerateParseTest.java ++++ b/jetty-http2/http2-common/src/test/java/org/eclipse/jetty/http2/frames/WindowUpdateGenerateParseTest.java +@@ -21,7 +21,6 @@ package org.eclipse.jetty.http2.frames; + import java.nio.ByteBuffer; + import java.util.ArrayList; + import java.util.List; +-import java.util.function.UnaryOperator; + + import org.eclipse.jetty.http2.generator.HeaderGenerator; + import org.eclipse.jetty.http2.generator.WindowUpdateGenerator; +@@ -42,15 +41,15 @@ public class WindowUpdateGenerateParseTest + WindowUpdateGenerator generator = new WindowUpdateGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onWindowUpdate(WindowUpdateFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int windowUpdate = 17; +@@ -83,15 +82,15 @@ public class WindowUpdateGenerateParseTest + WindowUpdateGenerator generator = new WindowUpdateGenerator(new HeaderGenerator()); + + final List frames = new ArrayList<>(); +- Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() ++ Parser parser = new Parser(byteBufferPool, 4096); ++ parser.init(new Parser.Listener.Adapter() + { + @Override + public void onWindowUpdate(WindowUpdateFrame frame) + { + frames.add(frame); + } +- }, 4096, 8192); +- parser.init(UnaryOperator.identity()); ++ }); + + int streamId = 13; + int windowUpdate = 17; +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java +index ea6b584..77734a1 100644 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java ++++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java +@@ -29,6 +29,8 @@ import org.eclipse.jetty.http.HttpField; + import org.eclipse.jetty.http.HttpHeader; + import org.eclipse.jetty.http.HttpMethod; + import org.eclipse.jetty.http.HttpScheme; ++import org.eclipse.jetty.http.compression.HuffmanEncoder; ++import org.eclipse.jetty.http.compression.NBitIntegerEncoder; + import org.eclipse.jetty.util.ArrayTernaryTrie; + import org.eclipse.jetty.util.StringUtil; + import org.eclipse.jetty.util.Trie; +@@ -118,6 +120,7 @@ public class HpackContext + private static final StaticEntry[] __staticTableByHeader = new StaticEntry[HttpHeader.UNKNOWN.ordinal()]; + private static final StaticEntry[] __staticTable = new StaticEntry[STATIC_TABLE.length]; + public static final int STATIC_SIZE = STATIC_TABLE.length - 1; ++ public static final int DEFAULT_MAX_TABLE_CAPACITY = 4096; + + static + { +@@ -153,7 +156,7 @@ public class HpackContext + + case C_STATUS: + { +- entry = new StaticEntry(i, new StaticTableHttpField(header, name, value, Integer.valueOf(value))); ++ entry = new StaticEntry(i, new StaticTableHttpField(header, name, value, value)); + break; + } + +@@ -187,26 +190,26 @@ public class HpackContext + } + } + +- private int _maxDynamicTableSizeInBytes; +- private int _dynamicTableSizeInBytes; + private final DynamicTable _dynamicTable; + private final Map _fieldMap = new HashMap<>(); + private final Map _nameMap = new HashMap<>(); ++ private int _maxTableSize; ++ private int _tableSize; + +- HpackContext(int maxDynamicTableSize) ++ HpackContext(int maxTableSize) + { +- _maxDynamicTableSizeInBytes = maxDynamicTableSize; +- int guesstimateEntries = 10 + maxDynamicTableSize / (32 + 10 + 10); ++ _maxTableSize = maxTableSize; ++ int guesstimateEntries = 10 + maxTableSize / (32 + 10 + 10); + _dynamicTable = new DynamicTable(guesstimateEntries); + if (LOG.isDebugEnabled()) +- LOG.debug(String.format("HdrTbl[%x] created max=%d", hashCode(), maxDynamicTableSize)); ++ LOG.debug(String.format("HdrTbl[%x] created max=%d", hashCode(), maxTableSize)); + } + + public void resize(int newMaxDynamicTableSize) + { + if (LOG.isDebugEnabled()) +- LOG.debug(String.format("HdrTbl[%x] resized max=%d->%d", hashCode(), _maxDynamicTableSizeInBytes, newMaxDynamicTableSize)); +- _maxDynamicTableSizeInBytes = newMaxDynamicTableSize; ++ LOG.debug(String.format("HdrTbl[%x] resized max=%d->%d", hashCode(), _maxTableSize, newMaxDynamicTableSize)); ++ _maxTableSize = newMaxDynamicTableSize; + _dynamicTable.evict(); + } + +@@ -251,14 +254,14 @@ public class HpackContext + { + Entry entry = new Entry(field); + int size = entry.getSize(); +- if (size > _maxDynamicTableSizeInBytes) ++ if (size > _maxTableSize) + { + if (LOG.isDebugEnabled()) +- LOG.debug(String.format("HdrTbl[%x] !added size %d>%d", hashCode(), size, _maxDynamicTableSizeInBytes)); ++ LOG.debug(String.format("HdrTbl[%x] !added size %d>%d", hashCode(), size, _maxTableSize)); + _dynamicTable.evictAll(); + return null; + } +- _dynamicTableSizeInBytes += size; ++ _tableSize += size; + _dynamicTable.add(entry); + _fieldMap.put(field, entry); + _nameMap.put(field.getLowerCaseName(), entry); +@@ -282,7 +285,7 @@ public class HpackContext + */ + public int getDynamicTableSize() + { +- return _dynamicTableSizeInBytes; ++ return _tableSize; + } + + /** +@@ -290,7 +293,7 @@ public class HpackContext + */ + public int getMaxDynamicTableSize() + { +- return _maxDynamicTableSizeInBytes; ++ return _maxTableSize; + } + + public int index(Entry entry) +@@ -316,15 +319,15 @@ public class HpackContext + @Override + public String toString() + { +- return String.format("HpackContext@%x{entries=%d,size=%d,max=%d}", hashCode(), _dynamicTable.size(), _dynamicTableSizeInBytes, _maxDynamicTableSizeInBytes); ++ return String.format("HpackContext@%x{entries=%d,size=%d,max=%d}", hashCode(), _dynamicTable.size(), _tableSize, _maxTableSize); + } + + private class DynamicTable + { +- Entry[] _entries; +- int _size; +- int _offset; +- int _growby; ++ private Entry[] _entries; ++ private final int _growby; ++ private int _size; ++ private int _offset; + + private DynamicTable(int initCapacity) + { +@@ -372,7 +375,7 @@ public class HpackContext + + private void evict() + { +- while (_dynamicTableSizeInBytes > _maxDynamicTableSizeInBytes) ++ while (_tableSize > _maxTableSize) + { + Entry entry = _entries[_offset]; + _entries[_offset] = null; +@@ -380,7 +383,7 @@ public class HpackContext + _size--; + if (LOG.isDebugEnabled()) + LOG.debug(String.format("HdrTbl[%x] evict %s", HpackContext.this.hashCode(), entry)); +- _dynamicTableSizeInBytes -= entry.getSize(); ++ _tableSize -= entry.getSize(); + entry._slot = -1; + _fieldMap.remove(entry.getHttpField()); + String lc = entry.getHttpField().getLowerCaseName(); +@@ -388,7 +391,7 @@ public class HpackContext + _nameMap.remove(lc); + } + if (LOG.isDebugEnabled()) +- LOG.debug(String.format("HdrTbl[%x] entries=%d, size=%d, max=%d", HpackContext.this.hashCode(), _dynamicTable.size(), _dynamicTableSizeInBytes, _maxDynamicTableSizeInBytes)); ++ LOG.debug(String.format("HdrTbl[%x] entries=%d, size=%d, max=%d", HpackContext.this.hashCode(), _dynamicTable.size(), _tableSize, _maxTableSize)); + } + + private void evictAll() +@@ -401,7 +404,7 @@ public class HpackContext + _nameMap.clear(); + _offset = 0; + _size = 0; +- _dynamicTableSizeInBytes = 0; ++ _tableSize = 0; + Arrays.fill(_entries, null); + } + } +@@ -461,21 +464,21 @@ public class HpackContext + super(field); + _slot = index; + String value = field.getValue(); +- if (value != null && value.length() > 0) ++ if (value != null && !value.isEmpty()) + { +- int huffmanLen = Huffman.octetsNeeded(value); ++ int huffmanLen = HuffmanEncoder.octetsNeeded(value); + if (huffmanLen < 0) + throw new IllegalStateException("bad value"); +- int lenLen = NBitInteger.octectsNeeded(7, huffmanLen); +- _huffmanValue = new byte[1 + lenLen + huffmanLen]; ++ int lenLen = NBitIntegerEncoder.octetsNeeded(7, huffmanLen); ++ _huffmanValue = new byte[lenLen + huffmanLen]; + ByteBuffer buffer = ByteBuffer.wrap(_huffmanValue); + + // Indicate Huffman + buffer.put((byte)0x80); + // Add huffman length +- NBitInteger.encode(buffer, 7, huffmanLen); ++ NBitIntegerEncoder.encode(buffer, 7, huffmanLen); + // Encode value +- Huffman.encode(buffer, value); ++ HuffmanEncoder.encode(buffer, value); + } + else + _huffmanValue = null; +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java +index 493b4f4..5bae260 100644 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java ++++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java +@@ -24,8 +24,12 @@ import org.eclipse.jetty.http.HttpField; + import org.eclipse.jetty.http.HttpHeader; + import org.eclipse.jetty.http.HttpTokens; + import org.eclipse.jetty.http.MetaData; ++import org.eclipse.jetty.http.compression.EncodingException; ++import org.eclipse.jetty.http.compression.HuffmanDecoder; ++import org.eclipse.jetty.http.compression.NBitIntegerDecoder; + import org.eclipse.jetty.http2.hpack.HpackContext.Entry; +-import org.eclipse.jetty.util.TypeUtil; ++import org.eclipse.jetty.util.BufferUtil; ++import org.eclipse.jetty.util.CharsetStringBuilder; + import org.eclipse.jetty.util.log.Log; + import org.eclipse.jetty.util.log.Logger; + +@@ -41,17 +45,27 @@ public class HpackDecoder + + private final HpackContext _context; + private final MetaDataBuilder _builder; +- private int _localMaxDynamicTableSize; ++ private final HuffmanDecoder _huffmanDecoder; ++ private final NBitIntegerDecoder _integerDecoder; ++ private int _maxTableCapacity; ++ ++ @Deprecated ++ public HpackDecoder(int localMaxDynamicTableSize, int maxHeaderSize) ++ { ++ this(maxHeaderSize); ++ } + + /** +- * @param localMaxDynamicTableSize The maximum allowed size of the local dynamic header field table. +- * @param maxHeaderSize The maximum allowed size of a headers block, expressed as total of all name and value characters, plus 32 per field ++ * @param maxHeaderSize The maximum allowed size of a decoded headers block, ++ * expressed as total of all name and value bytes, plus 32 bytes per field + */ +- public HpackDecoder(int localMaxDynamicTableSize, int maxHeaderSize) ++ public HpackDecoder(int maxHeaderSize) + { +- _context = new HpackContext(localMaxDynamicTableSize); +- _localMaxDynamicTableSize = localMaxDynamicTableSize; ++ _context = new HpackContext(HpackContext.DEFAULT_MAX_TABLE_CAPACITY); + _builder = new MetaDataBuilder(maxHeaderSize); ++ _huffmanDecoder = new HuffmanDecoder(); ++ _integerDecoder = new NBitIntegerDecoder(); ++ setMaxTableCapacity(HpackContext.DEFAULT_MAX_TABLE_CAPACITY); + } + + public HpackContext getHpackContext() +@@ -59,9 +73,44 @@ public class HpackDecoder + return _context; + } + +- public void setLocalMaxDynamicTableSize(int localMaxdynamciTableSize) ++ public int getMaxTableCapacity() ++ { ++ return _maxTableCapacity; ++ } ++ ++ /** ++ *

Sets the limit for the capacity of the dynamic header table.

++ *

This value acts as a limit for the values received from the ++ * remote peer via the HPACK dynamic table size update instruction.

++ *

After calling this method, a SETTINGS frame must be sent to the other ++ * peer, containing the {@code SETTINGS_HEADER_TABLE_SIZE} setting with ++ * the value passed as argument to this method.

++ * ++ * @param maxTableCapacity the limit for capacity of the dynamic header table ++ */ ++ public void setMaxTableCapacity(int maxTableCapacity) ++ { ++ _maxTableCapacity = maxTableCapacity; ++ } ++ ++ /** ++ * @param maxTableSizeLimit the local dynamic table max size ++ * @deprecated use {@link #setMaxTableCapacity(int)} instead ++ */ ++ @Deprecated ++ public void setLocalMaxDynamicTableSize(int maxTableSizeLimit) ++ { ++ setMaxTableCapacity(maxTableSizeLimit); ++ } ++ ++ public int getMaxHeaderListSize() ++ { ++ return _builder.getMaxSize(); ++ } ++ ++ public void setMaxHeaderListSize(int maxHeaderListSize) + { +- _localMaxDynamicTableSize = localMaxdynamciTableSize; ++ _builder.setMaxSize(maxHeaderListSize); + } + + public MetaData decode(ByteBuffer buffer) throws HpackException.SessionException, HpackException.StreamException +@@ -69,27 +118,22 @@ public class HpackDecoder + if (LOG.isDebugEnabled()) + LOG.debug(String.format("CtxTbl[%x] decoding %d octets", _context.hashCode(), buffer.remaining())); + +- // If the buffer is big, don't even think about decoding it +- if (buffer.remaining() > _builder.getMaxSize()) +- throw new HpackException.SessionException("431 Request Header Fields too large"); ++ // If the buffer is larger than the max headers size, don't even start decoding it. ++ int maxSize = _builder.getMaxSize(); ++ if (maxSize > 0 && buffer.remaining() > maxSize) ++ throw new HpackException.SessionException("Header fields size too large"); + + boolean emitted = false; +- + while (buffer.hasRemaining()) + { +- if (LOG.isDebugEnabled() && buffer.hasArray()) +- { +- int l = Math.min(buffer.remaining(), 32); +- LOG.debug("decode {}{}", +- TypeUtil.toHexString(buffer.array(), buffer.arrayOffset() + buffer.position(), l), +- l < buffer.remaining() ? "..." : ""); +- } ++ if (LOG.isDebugEnabled()) ++ LOG.debug("decode {}", BufferUtil.toHexString(buffer)); + + byte b = buffer.get(); + if (b < 0) + { + // 7.1 indexed if the high bit is set +- int index = NBitInteger.decode(buffer, 7); ++ int index = integerDecode(buffer, 7); + Entry entry = _context.get(index); + if (entry == null) + throw new HpackException.SessionException("Unknown index %d", index); +@@ -130,11 +174,11 @@ public class HpackDecoder + case 2: // 7.3 + case 3: // 7.3 + // change table size +- int size = NBitInteger.decode(buffer, 5); ++ int size = integerDecode(buffer, 5); + if (LOG.isDebugEnabled()) +- LOG.debug("decode resize=" + size); +- if (size > _localMaxDynamicTableSize) +- throw new IllegalArgumentException(); ++ LOG.debug("decode resize={}", size); ++ if (size > getMaxTableCapacity()) ++ throw new HpackException.CompressionException("Dynamic table resize exceeded max limit"); + if (emitted) + throw new HpackException.CompressionException("Dynamic table resize after fields"); + _context.resize(size); +@@ -143,7 +187,7 @@ public class HpackDecoder + case 0: // 7.2.2 + case 1: // 7.2.3 + indexed = false; +- nameIndex = NBitInteger.decode(buffer, 4); ++ nameIndex = integerDecode(buffer, 4); + break; + + case 4: // 7.2.1 +@@ -151,7 +195,7 @@ public class HpackDecoder + case 6: // 7.2.1 + case 7: // 7.2.1 + indexed = true; +- nameIndex = NBitInteger.decode(buffer, 6); ++ nameIndex = integerDecode(buffer, 6); + break; + + default: +@@ -170,12 +214,11 @@ public class HpackDecoder + else + { + huffmanName = (buffer.get() & 0x80) == 0x80; +- int length = NBitInteger.decode(buffer, 7); +- _builder.checkSize(length, huffmanName); ++ int length = integerDecode(buffer, 7); + if (huffmanName) +- name = Huffman.decode(buffer, length); ++ name = huffmanDecode(buffer, length); + else +- name = toASCIIString(buffer, length); ++ name = toISO88591String(buffer, length); + check: + for (int i = name.length(); i-- > 0; ) + { +@@ -211,12 +254,11 @@ public class HpackDecoder + + // decode the value + boolean huffmanValue = (buffer.get() & 0x80) == 0x80; +- int length = NBitInteger.decode(buffer, 7); +- _builder.checkSize(length, huffmanValue); ++ int length = integerDecode(buffer, 7); + if (huffmanValue) +- value = Huffman.decode(buffer, length); ++ value = huffmanDecode(buffer, length); + else +- value = toASCIIString(buffer, length); ++ value = toISO88591String(buffer, length); + + // Make the new field + HttpField field; +@@ -277,19 +319,61 @@ public class HpackDecoder + return _builder.build(); + } + +- public static String toASCIIString(ByteBuffer buffer, int length) ++ private int integerDecode(ByteBuffer buffer, int prefix) throws HpackException.CompressionException ++ { ++ try ++ { ++ if (prefix != 8) ++ buffer.position(buffer.position() - 1); ++ ++ _integerDecoder.setPrefix(prefix); ++ int decodedInt = _integerDecoder.decodeInt(buffer); ++ if (decodedInt < 0) ++ throw new EncodingException("invalid integer encoding"); ++ return decodedInt; ++ } ++ catch (EncodingException e) ++ { ++ HpackException.CompressionException compressionException = new HpackException.CompressionException(e.getMessage()); ++ compressionException.initCause(e); ++ throw compressionException; ++ } ++ finally ++ { ++ _integerDecoder.reset(); ++ } ++ } ++ ++ private String huffmanDecode(ByteBuffer buffer, int length) throws HpackException.CompressionException ++ { ++ try ++ { ++ _huffmanDecoder.setLength(length); ++ String decoded = _huffmanDecoder.decode(buffer); ++ if (decoded == null) ++ throw new HpackException.CompressionException("invalid string encoding"); ++ return decoded; ++ } ++ catch (EncodingException e) ++ { ++ HpackException.CompressionException compressionException = new HpackException.CompressionException(e.getMessage()); ++ compressionException.initCause(e); ++ throw compressionException; ++ } ++ finally ++ { ++ _huffmanDecoder.reset(); ++ } ++ } ++ ++ public static String toISO88591String(ByteBuffer buffer, int length) + { +- StringBuilder builder = new StringBuilder(length); +- int position = buffer.position(); +- int start = buffer.arrayOffset() + position; +- int end = start + length; +- buffer.position(position + length); +- byte[] array = buffer.array(); +- for (int i = start; i < end; i++) ++ CharsetStringBuilder.Iso88591StringBuilder builder = new CharsetStringBuilder.Iso88591StringBuilder(); ++ for (int i = 0; i < length; ++i) + { +- builder.append((char)(0x7f & array[i])); ++ builder.append(HttpTokens.sanitizeFieldVchar((char)buffer.get())); + } +- return builder.toString(); ++ return builder.build(); + } + + @Override +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java +index 1011252..cb68bad 100644 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java ++++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java +@@ -19,7 +19,6 @@ + package org.eclipse.jetty.http2.hpack; + + import java.nio.ByteBuffer; +-import java.nio.charset.StandardCharsets; + import java.util.EnumMap; + import java.util.EnumSet; + import java.util.HashSet; +@@ -34,10 +33,13 @@ import org.eclipse.jetty.http.HttpStatus; + import org.eclipse.jetty.http.HttpVersion; + import org.eclipse.jetty.http.MetaData; + import org.eclipse.jetty.http.PreEncodedHttpField; ++import org.eclipse.jetty.http.compression.HuffmanEncoder; ++import org.eclipse.jetty.http.compression.NBitIntegerEncoder; ++import org.eclipse.jetty.http.compression.NBitStringEncoder; + import org.eclipse.jetty.http2.hpack.HpackContext.Entry; + import org.eclipse.jetty.http2.hpack.HpackContext.StaticEntry; ++import org.eclipse.jetty.util.BufferUtil; + import org.eclipse.jetty.util.StringUtil; +-import org.eclipse.jetty.util.TypeUtil; + import org.eclipse.jetty.util.log.Log; + import org.eclipse.jetty.util.log.Logger; + +@@ -97,34 +99,78 @@ public class HpackEncoder + + private final HpackContext _context; + private final boolean _debug; +- private int _remoteMaxDynamicTableSize; +- private int _localMaxDynamicTableSize; ++ private int _maxTableCapacity; ++ private int _tableCapacity; + private int _maxHeaderListSize; + private int _headerListSize; + private boolean _validateEncoding = true; + +- public HpackEncoder() +- { +- this(4096, 4096, -1); +- } +- ++ @Deprecated + public HpackEncoder(int localMaxDynamicTableSize) + { + this(localMaxDynamicTableSize, 4096, -1); + } + ++ @Deprecated + public HpackEncoder(int localMaxDynamicTableSize, int remoteMaxDynamicTableSize) + { + this(localMaxDynamicTableSize, remoteMaxDynamicTableSize, -1); + } + ++ @Deprecated + public HpackEncoder(int localMaxDynamicTableSize, int remoteMaxDynamicTableSize, int maxHeaderListSize) + { +- _context = new HpackContext(remoteMaxDynamicTableSize); +- _remoteMaxDynamicTableSize = remoteMaxDynamicTableSize; +- _localMaxDynamicTableSize = localMaxDynamicTableSize; +- _maxHeaderListSize = maxHeaderListSize; ++ this(); ++ setLocalMaxDynamicTableSize(localMaxDynamicTableSize); ++ setRemoteMaxDynamicTableSize(remoteMaxDynamicTableSize); ++ setMaxHeaderListSize(maxHeaderListSize); ++ } ++ ++ public HpackEncoder() ++ { ++ _context = new HpackContext(0); + _debug = LOG.isDebugEnabled(); ++ setMaxTableCapacity(HpackContext.DEFAULT_MAX_TABLE_CAPACITY); ++ setTableCapacity(HpackContext.DEFAULT_MAX_TABLE_CAPACITY); ++ } ++ ++ public int getMaxTableCapacity() ++ { ++ return _maxTableCapacity; ++ } ++ ++ /** ++ *

Sets the limit for the capacity of the dynamic header table.

++ *

This value is set by the remote peer via the ++ * {@code SETTINGS_HEADER_TABLE_SIZE} setting.

++ * ++ * @param maxTableSizeLimit the limit for capacity of the dynamic header table ++ */ ++ public void setMaxTableCapacity(int maxTableSizeLimit) ++ { ++ _maxTableCapacity = maxTableSizeLimit; ++ } ++ ++ public int getTableCapacity() ++ { ++ return _tableCapacity; ++ } ++ ++ /** ++ *

Sets the capacity of the dynamic header table.

++ *

The value of the capacity may be changed from {@code 0} ++ * up to {@link #getMaxTableCapacity()}. ++ * An HPACK instruction with the new capacity value will ++ * be sent to the decoder when the next call to ++ * {@link #encode(ByteBuffer, MetaData)} is made.

++ * ++ * @param tableCapacity the capacity of the dynamic header table ++ */ ++ public void setTableCapacity(int tableCapacity) ++ { ++ if (tableCapacity > getMaxTableCapacity()) ++ throw new IllegalArgumentException("Max table capacity exceeded"); ++ _tableCapacity = tableCapacity; + } + + public int getMaxHeaderListSize() +@@ -142,14 +188,16 @@ public class HpackEncoder + return _context; + } + +- public void setRemoteMaxDynamicTableSize(int remoteMaxDynamicTableSize) ++ @Deprecated ++ public void setRemoteMaxDynamicTableSize(int maxTableSize) + { +- _remoteMaxDynamicTableSize = remoteMaxDynamicTableSize; ++ setTableCapacity(maxTableSize); + } + +- public void setLocalMaxDynamicTableSize(int localMaxDynamicTableSize) ++ @Deprecated ++ public void setLocalMaxDynamicTableSize(int maxTableSizeLimit) + { +- _localMaxDynamicTableSize = localMaxDynamicTableSize; ++ setMaxTableCapacity(maxTableSizeLimit); + } + + public boolean isValidateEncoding() +@@ -185,10 +233,10 @@ public class HpackEncoder + _headerListSize = 0; + int pos = buffer.position(); + +- // Check the dynamic table sizes! +- int maxDynamicTableSize = Math.min(_remoteMaxDynamicTableSize, _localMaxDynamicTableSize); +- if (maxDynamicTableSize != _context.getMaxDynamicTableSize()) +- encodeMaxDynamicTableSize(buffer, maxDynamicTableSize); ++ // If max table size changed, send the correspondent instruction. ++ int tableCapacity = getTableCapacity(); ++ if (tableCapacity != _context.getMaxDynamicTableSize()) ++ encodeMaxDynamicTableSize(buffer, tableCapacity); + + // Add Request/response meta fields + if (metadata.isRequest()) +@@ -255,13 +303,9 @@ public class HpackEncoder + } + } + +- // Check size +- if (_maxHeaderListSize > 0 && _headerListSize > _maxHeaderListSize) +- { +- LOG.warn("Header list size too large {} > {} for {}", _headerListSize, _maxHeaderListSize); +- if (LOG.isDebugEnabled()) +- LOG.debug("metadata={}", metadata); +- } ++ int maxHeaderListSize = getMaxHeaderListSize(); ++ if (maxHeaderListSize > 0 && _headerListSize > maxHeaderListSize) ++ throw new HpackException.SessionException("Header size %d > %d", _headerListSize, maxHeaderListSize); + + if (LOG.isDebugEnabled()) + LOG.debug(String.format("CtxTbl[%x] encoded %d octets", _context.hashCode(), buffer.position() - pos)); +@@ -278,13 +322,11 @@ public class HpackEncoder + } + } + +- public void encodeMaxDynamicTableSize(ByteBuffer buffer, int maxDynamicTableSize) ++ public void encodeMaxDynamicTableSize(ByteBuffer buffer, int maxTableSize) + { +- if (maxDynamicTableSize > _remoteMaxDynamicTableSize) +- throw new IllegalArgumentException(); + buffer.put((byte)0x20); +- NBitInteger.encode(buffer, 5, maxDynamicTableSize); +- _context.resize(maxDynamicTableSize); ++ NBitIntegerEncoder.encode(buffer, 5, maxTableSize); ++ _context.resize(maxTableSize); + } + + public void encode(ByteBuffer buffer, HttpField field) +@@ -295,8 +337,6 @@ public class HpackEncoder + int fieldSize = field.getName().length() + field.getValue().length(); + _headerListSize += fieldSize + 32; + +- final int p = _debug ? buffer.position() : -1; +- + String encoding = null; + + // Is there an index entry for the field? +@@ -314,9 +354,9 @@ public class HpackEncoder + { + int index = _context.index(entry); + buffer.put((byte)0x80); +- NBitInteger.encode(buffer, 7, index); ++ NBitIntegerEncoder.encode(buffer, 7, index); + if (_debug) +- encoding = "IdxField" + (entry.isStatic() ? "S" : "") + (1 + NBitInteger.octectsNeeded(7, index)); ++ encoding = "IdxField" + (entry.isStatic() ? "S" : "") + NBitIntegerEncoder.octetsNeeded(7, index); + } + } + else +@@ -390,19 +430,19 @@ public class HpackEncoder + + if (_debug) + encoding = "Lit" + +- ((name == null) ? "HuffN" : ("IdxN" + (name.isStatic() ? "S" : "") + (1 + NBitInteger.octectsNeeded(4, _context.index(name))))) + ++ ((name == null) ? "HuffN" : ("IdxN" + (name.isStatic() ? "S" : "") + (1 + NBitIntegerEncoder.octetsNeeded(4, _context.index(name))))) + + (huffman ? "HuffV" : "LitV") + + (neverIndex ? "!!Idx" : "!Idx"); + } + else if (fieldSize >= _context.getMaxDynamicTableSize() || header == HttpHeader.CONTENT_LENGTH && !"0".equals(field.getValue())) + { +- // The field is too large or a non zero content length, so do not index. ++ // The field is too large or a non-zero content length, so do not index. + indexed = false; + encodeName(buffer, (byte)0x00, 4, header.asString(), name); + encodeValue(buffer, true, field.getValue()); + if (_debug) + encoding = "Lit" + +- ((name == null) ? "HuffN" : "IdxNS" + (1 + NBitInteger.octectsNeeded(4, _context.index(name)))) + ++ ((name == null) ? "HuffN" : "IdxNS" + (1 + NBitIntegerEncoder.octetsNeeded(4, _context.index(name)))) + + "HuffV!Idx"; + } + else +@@ -413,7 +453,7 @@ public class HpackEncoder + encodeName(buffer, (byte)0x40, 6, header.asString(), name); + encodeValue(buffer, huffman, field.getValue()); + if (_debug) +- encoding = ((name == null) ? "LitHuffN" : ("LitIdxN" + (name.isStatic() ? "S" : "") + (1 + NBitInteger.octectsNeeded(6, _context.index(name))))) + ++ encoding = ((name == null) ? "LitHuffN" : ("LitIdxN" + (name.isStatic() ? "S" : "") + (1 + NBitIntegerEncoder.octetsNeeded(6, _context.index(name))))) + + (huffman ? "HuffVIdx" : "LitVIdx"); + } + } +@@ -425,10 +465,8 @@ public class HpackEncoder + + if (_debug) + { +- byte[] bytes = new byte[buffer.position() - p]; +- buffer.position(p); +- buffer.get(bytes); +- LOG.debug("encode {}:'{}' to '{}'", encoding, field, TypeUtil.toHexString(bytes)); ++ if (LOG.isDebugEnabled()) ++ LOG.debug("encode {}:'{}' to '{}'", encoding, field, BufferUtil.toHexString((ByteBuffer)buffer.duplicate().flip())); + } + } + +@@ -440,55 +478,17 @@ public class HpackEncoder + // leave name index bits as 0 + // Encode the name always with lowercase huffman + buffer.put((byte)0x80); +- NBitInteger.encode(buffer, 7, Huffman.octetsNeededLC(name)); +- Huffman.encodeLC(buffer, name); ++ NBitIntegerEncoder.encode(buffer, 7, HuffmanEncoder.octetsNeededLowerCase(name)); ++ HuffmanEncoder.encodeLowerCase(buffer, name); + } + else + { +- NBitInteger.encode(buffer, bits, _context.index(entry)); ++ NBitIntegerEncoder.encode(buffer, bits, _context.index(entry)); + } + } + + static void encodeValue(ByteBuffer buffer, boolean huffman, String value) + { +- if (huffman) +- { +- // huffman literal value +- buffer.put((byte)0x80); +- +- int needed = Huffman.octetsNeeded(value); +- if (needed >= 0) +- { +- NBitInteger.encode(buffer, 7, needed); +- Huffman.encode(buffer, value); +- } +- else +- { +- // Not iso_8859_1 +- byte[] bytes = value.getBytes(StandardCharsets.UTF_8); +- NBitInteger.encode(buffer, 7, Huffman.octetsNeeded(bytes)); +- Huffman.encode(buffer, bytes); +- } +- } +- else +- { +- // add literal assuming iso_8859_1 +- buffer.put((byte)0x00).mark(); +- NBitInteger.encode(buffer, 7, value.length()); +- for (int i = 0; i < value.length(); i++) +- { +- char c = value.charAt(i); +- if (c < ' ' || c > 127) +- { +- // Not iso_8859_1, so re-encode as UTF-8 +- buffer.reset(); +- byte[] bytes = value.getBytes(StandardCharsets.UTF_8); +- NBitInteger.encode(buffer, 7, bytes.length); +- buffer.put(bytes, 0, bytes.length); +- return; +- } +- buffer.put((byte)c); +- } +- } ++ NBitStringEncoder.encode(buffer, 8, value, huffman); + } + } +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackException.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackException.java +index 2aad122..df89d80 100644 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackException.java ++++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackException.java +@@ -18,7 +18,6 @@ + + package org.eclipse.jetty.http2.hpack; + +-@SuppressWarnings("serial") + public abstract class HpackException extends Exception + { + HpackException(String messageFormat, Object... args) +@@ -35,7 +34,7 @@ public abstract class HpackException extends Exception + */ + public static class StreamException extends HpackException + { +- StreamException(String messageFormat, Object... args) ++ public StreamException(String messageFormat, Object... args) + { + super(messageFormat, args); + } +@@ -48,7 +47,7 @@ public abstract class HpackException extends Exception + */ + public static class SessionException extends HpackException + { +- SessionException(String messageFormat, Object... args) ++ public SessionException(String messageFormat, Object... args) + { + super(messageFormat, args); + } +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackFieldPreEncoder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackFieldPreEncoder.java +index 769819d..629ef2c 100644 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackFieldPreEncoder.java ++++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackFieldPreEncoder.java +@@ -23,6 +23,8 @@ import java.nio.ByteBuffer; + import org.eclipse.jetty.http.HttpFieldPreEncoder; + import org.eclipse.jetty.http.HttpHeader; + import org.eclipse.jetty.http.HttpVersion; ++import org.eclipse.jetty.http.compression.HuffmanEncoder; ++import org.eclipse.jetty.http.compression.NBitIntegerEncoder; + import org.eclipse.jetty.util.BufferUtil; + + /** +@@ -31,18 +33,12 @@ import org.eclipse.jetty.util.BufferUtil; + public class HpackFieldPreEncoder implements HttpFieldPreEncoder + { + +- /** +- * @see org.eclipse.jetty.http.HttpFieldPreEncoder#getHttpVersion() +- */ + @Override + public HttpVersion getHttpVersion() + { + return HttpVersion.HTTP_2; + } + +- /** +- * @see org.eclipse.jetty.http.HttpFieldPreEncoder#getEncodedField(org.eclipse.jetty.http.HttpHeader, java.lang.String, java.lang.String) +- */ + @Override + public byte[] getEncodedField(HttpHeader header, String name, String value) + { +@@ -78,12 +74,12 @@ public class HpackFieldPreEncoder implements HttpFieldPreEncoder + + int nameIdx = HpackContext.staticIndex(header); + if (nameIdx > 0) +- NBitInteger.encode(buffer, bits, nameIdx); ++ NBitIntegerEncoder.encode(buffer, bits, nameIdx); + else + { + buffer.put((byte)0x80); +- NBitInteger.encode(buffer, 7, Huffman.octetsNeededLC(name)); +- Huffman.encodeLC(buffer, name); ++ NBitIntegerEncoder.encode(buffer, 7, HuffmanEncoder.octetsNeededLowerCase(name)); ++ HuffmanEncoder.encodeLowerCase(buffer, name); + } + + HpackEncoder.encodeValue(buffer, huffman, value); +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java +deleted file mode 100644 +index 26e948b..0000000 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/Huffman.java ++++ /dev/null +@@ -1,551 +0,0 @@ +-// +-// ======================================================================== +-// Copyright (c) 1995-2022 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.http2.hpack; +- +-import java.nio.ByteBuffer; +- +-import org.eclipse.jetty.util.Utf8StringBuilder; +- +-public class Huffman +-{ +- +- // Appendix C: Huffman Codes +- // http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#appendix-C +- static final int[][] CODES = +- { +- /* ( 0) |11111111|11000 */ {0x1ff8, 13}, +- /* ( 1) |11111111|11111111|1011000 */ {0x7fffd8, 23}, +- /* ( 2) |11111111|11111111|11111110|0010 */ {0xfffffe2, 28}, +- /* ( 3) |11111111|11111111|11111110|0011 */ {0xfffffe3, 28}, +- /* ( 4) |11111111|11111111|11111110|0100 */ {0xfffffe4, 28}, +- /* ( 5) |11111111|11111111|11111110|0101 */ {0xfffffe5, 28}, +- /* ( 6) |11111111|11111111|11111110|0110 */ {0xfffffe6, 28}, +- /* ( 7) |11111111|11111111|11111110|0111 */ {0xfffffe7, 28}, +- /* ( 8) |11111111|11111111|11111110|1000 */ {0xfffffe8, 28}, +- /* ( 9) |11111111|11111111|11101010 */ {0xffffea, 24}, +- /* ( 10) |11111111|11111111|11111111|111100 */ {0x3ffffffc, 30}, +- /* ( 11) |11111111|11111111|11111110|1001 */ {0xfffffe9, 28}, +- /* ( 12) |11111111|11111111|11111110|1010 */ {0xfffffea, 28}, +- /* ( 13) |11111111|11111111|11111111|111101 */ {0x3ffffffd, 30}, +- /* ( 14) |11111111|11111111|11111110|1011 */ {0xfffffeb, 28}, +- /* ( 15) |11111111|11111111|11111110|1100 */ {0xfffffec, 28}, +- /* ( 16) |11111111|11111111|11111110|1101 */ {0xfffffed, 28}, +- /* ( 17) |11111111|11111111|11111110|1110 */ {0xfffffee, 28}, +- /* ( 18) |11111111|11111111|11111110|1111 */ {0xfffffef, 28}, +- /* ( 19) |11111111|11111111|11111111|0000 */ {0xffffff0, 28}, +- /* ( 20) |11111111|11111111|11111111|0001 */ {0xffffff1, 28}, +- /* ( 21) |11111111|11111111|11111111|0010 */ {0xffffff2, 28}, +- /* ( 22) |11111111|11111111|11111111|111110 */ {0x3ffffffe, 30}, +- /* ( 23) |11111111|11111111|11111111|0011 */ {0xffffff3, 28}, +- /* ( 24) |11111111|11111111|11111111|0100 */ {0xffffff4, 28}, +- /* ( 25) |11111111|11111111|11111111|0101 */ {0xffffff5, 28}, +- /* ( 26) |11111111|11111111|11111111|0110 */ {0xffffff6, 28}, +- /* ( 27) |11111111|11111111|11111111|0111 */ {0xffffff7, 28}, +- /* ( 28) |11111111|11111111|11111111|1000 */ {0xffffff8, 28}, +- /* ( 29) |11111111|11111111|11111111|1001 */ {0xffffff9, 28}, +- /* ( 30) |11111111|11111111|11111111|1010 */ {0xffffffa, 28}, +- /* ( 31) |11111111|11111111|11111111|1011 */ {0xffffffb, 28}, +- /*' ' ( 32) |010100 */ {0x14, 6}, +- /*'!' ( 33) |11111110|00 */ {0x3f8, 10}, +- /*'"' ( 34) |11111110|01 */ {0x3f9, 10}, +- /*'#' ( 35) |11111111|1010 */ {0xffa, 12}, +- /*'$' ( 36) |11111111|11001 */ {0x1ff9, 13}, +- /*'%' ( 37) |010101 */ {0x15, 6}, +- /*'&' ( 38) |11111000 */ {0xf8, 8}, +- /*''' ( 39) |11111111|010 */ {0x7fa, 11}, +- /*'(' ( 40) |11111110|10 */ {0x3fa, 10}, +- /*')' ( 41) |11111110|11 */ {0x3fb, 10}, +- /*'*' ( 42) |11111001 */ {0xf9, 8}, +- /*'+' ( 43) |11111111|011 */ {0x7fb, 11}, +- /*',' ( 44) |11111010 */ {0xfa, 8}, +- /*'-' ( 45) |010110 */ {0x16, 6}, +- /*'.' ( 46) |010111 */ {0x17, 6}, +- /*'/' ( 47) |011000 */ {0x18, 6}, +- /*'0' ( 48) |00000 */ {0x0, 5}, +- /*'1' ( 49) |00001 */ {0x1, 5}, +- /*'2' ( 50) |00010 */ {0x2, 5}, +- /*'3' ( 51) |011001 */ {0x19, 6}, +- /*'4' ( 52) |011010 */ {0x1a, 6}, +- /*'5' ( 53) |011011 */ {0x1b, 6}, +- /*'6' ( 54) |011100 */ {0x1c, 6}, +- /*'7' ( 55) |011101 */ {0x1d, 6}, +- /*'8' ( 56) |011110 */ {0x1e, 6}, +- /*'9' ( 57) |011111 */ {0x1f, 6}, +- /*':' ( 58) |1011100 */ {0x5c, 7}, +- /*';' ( 59) |11111011 */ {0xfb, 8}, +- /*'<' ( 60) |11111111|1111100 */ {0x7ffc, 15}, +- /*'=' ( 61) |100000 */ {0x20, 6}, +- /*'>' ( 62) |11111111|1011 */ {0xffb, 12}, +- /*'?' ( 63) |11111111|00 */ {0x3fc, 10}, +- /*'@' ( 64) |11111111|11010 */ {0x1ffa, 13}, +- /*'A' ( 65) |100001 */ {0x21, 6}, +- /*'B' ( 66) |1011101 */ {0x5d, 7}, +- /*'C' ( 67) |1011110 */ {0x5e, 7}, +- /*'D' ( 68) |1011111 */ {0x5f, 7}, +- /*'E' ( 69) |1100000 */ {0x60, 7}, +- /*'F' ( 70) |1100001 */ {0x61, 7}, +- /*'G' ( 71) |1100010 */ {0x62, 7}, +- /*'H' ( 72) |1100011 */ {0x63, 7}, +- /*'I' ( 73) |1100100 */ {0x64, 7}, +- /*'J' ( 74) |1100101 */ {0x65, 7}, +- /*'K' ( 75) |1100110 */ {0x66, 7}, +- /*'L' ( 76) |1100111 */ {0x67, 7}, +- /*'M' ( 77) |1101000 */ {0x68, 7}, +- /*'N' ( 78) |1101001 */ {0x69, 7}, +- /*'O' ( 79) |1101010 */ {0x6a, 7}, +- /*'P' ( 80) |1101011 */ {0x6b, 7}, +- /*'Q' ( 81) |1101100 */ {0x6c, 7}, +- /*'R' ( 82) |1101101 */ {0x6d, 7}, +- /*'S' ( 83) |1101110 */ {0x6e, 7}, +- /*'T' ( 84) |1101111 */ {0x6f, 7}, +- /*'U' ( 85) |1110000 */ {0x70, 7}, +- /*'V' ( 86) |1110001 */ {0x71, 7}, +- /*'W' ( 87) |1110010 */ {0x72, 7}, +- /*'X' ( 88) |11111100 */ {0xfc, 8}, +- /*'Y' ( 89) |1110011 */ {0x73, 7}, +- /*'Z' ( 90) |11111101 */ {0xfd, 8}, +- /*'[' ( 91) |11111111|11011 */ {0x1ffb, 13}, +- /*'\' ( 92) |11111111|11111110|000 */ {0x7fff0, 19}, +- /*']' ( 93) |11111111|11100 */ {0x1ffc, 13}, +- /*'^' ( 94) |11111111|111100 */ {0x3ffc, 14}, +- /*'_' ( 95) |100010 */ {0x22, 6}, +- /*'`' ( 96) |11111111|1111101 */ {0x7ffd, 15}, +- /*'a' ( 97) |00011 */ {0x3, 5}, +- /*'b' ( 98) |100011 */ {0x23, 6}, +- /*'c' ( 99) |00100 */ {0x4, 5}, +- /*'d' (100) |100100 */ {0x24, 6}, +- /*'e' (101) |00101 */ {0x5, 5}, +- /*'f' (102) |100101 */ {0x25, 6}, +- /*'g' (103) |100110 */ {0x26, 6}, +- /*'h' (104) |100111 */ {0x27, 6}, +- /*'i' (105) |00110 */ {0x6, 5}, +- /*'j' (106) |1110100 */ {0x74, 7}, +- /*'k' (107) |1110101 */ {0x75, 7}, +- /*'l' (108) |101000 */ {0x28, 6}, +- /*'m' (109) |101001 */ {0x29, 6}, +- /*'n' (110) |101010 */ {0x2a, 6}, +- /*'o' (111) |00111 */ {0x7, 5}, +- /*'p' (112) |101011 */ {0x2b, 6}, +- /*'q' (113) |1110110 */ {0x76, 7}, +- /*'r' (114) |101100 */ {0x2c, 6}, +- /*'s' (115) |01000 */ {0x8, 5}, +- /*'t' (116) |01001 */ {0x9, 5}, +- /*'u' (117) |101101 */ {0x2d, 6}, +- /*'v' (118) |1110111 */ {0x77, 7}, +- /*'w' (119) |1111000 */ {0x78, 7}, +- /*'x' (120) |1111001 */ {0x79, 7}, +- /*'y' (121) |1111010 */ {0x7a, 7}, +- /*'z' (122) |1111011 */ {0x7b, 7}, +- /*'{' (123) |11111111|1111110 */ {0x7ffe, 15}, +- /*'|' (124) |11111111|100 */ {0x7fc, 11}, +- /*'}' (125) |11111111|111101 */ {0x3ffd, 14}, +- /*'~' (126) |11111111|11101 */ {0x1ffd, 13}, +- /* (127) |11111111|11111111|11111111|1100 */ {0xffffffc, 28}, +- /* (128) |11111111|11111110|0110 */ {0xfffe6, 20}, +- /* (129) |11111111|11111111|010010 */ {0x3fffd2, 22}, +- /* (130) |11111111|11111110|0111 */ {0xfffe7, 20}, +- /* (131) |11111111|11111110|1000 */ {0xfffe8, 20}, +- /* (132) |11111111|11111111|010011 */ {0x3fffd3, 22}, +- /* (133) |11111111|11111111|010100 */ {0x3fffd4, 22}, +- /* (134) |11111111|11111111|010101 */ {0x3fffd5, 22}, +- /* (135) |11111111|11111111|1011001 */ {0x7fffd9, 23}, +- /* (136) |11111111|11111111|010110 */ {0x3fffd6, 22}, +- /* (137) |11111111|11111111|1011010 */ {0x7fffda, 23}, +- /* (138) |11111111|11111111|1011011 */ {0x7fffdb, 23}, +- /* (139) |11111111|11111111|1011100 */ {0x7fffdc, 23}, +- /* (140) |11111111|11111111|1011101 */ {0x7fffdd, 23}, +- /* (141) |11111111|11111111|1011110 */ {0x7fffde, 23}, +- /* (142) |11111111|11111111|11101011 */ {0xffffeb, 24}, +- /* (143) |11111111|11111111|1011111 */ {0x7fffdf, 23}, +- /* (144) |11111111|11111111|11101100 */ {0xffffec, 24}, +- /* (145) |11111111|11111111|11101101 */ {0xffffed, 24}, +- /* (146) |11111111|11111111|010111 */ {0x3fffd7, 22}, +- /* (147) |11111111|11111111|1100000 */ {0x7fffe0, 23}, +- /* (148) |11111111|11111111|11101110 */ {0xffffee, 24}, +- /* (149) |11111111|11111111|1100001 */ {0x7fffe1, 23}, +- /* (150) |11111111|11111111|1100010 */ {0x7fffe2, 23}, +- /* (151) |11111111|11111111|1100011 */ {0x7fffe3, 23}, +- /* (152) |11111111|11111111|1100100 */ {0x7fffe4, 23}, +- /* (153) |11111111|11111110|11100 */ {0x1fffdc, 21}, +- /* (154) |11111111|11111111|011000 */ {0x3fffd8, 22}, +- /* (155) |11111111|11111111|1100101 */ {0x7fffe5, 23}, +- /* (156) |11111111|11111111|011001 */ {0x3fffd9, 22}, +- /* (157) |11111111|11111111|1100110 */ {0x7fffe6, 23}, +- /* (158) |11111111|11111111|1100111 */ {0x7fffe7, 23}, +- /* (159) |11111111|11111111|11101111 */ {0xffffef, 24}, +- /* (160) |11111111|11111111|011010 */ {0x3fffda, 22}, +- /* (161) |11111111|11111110|11101 */ {0x1fffdd, 21}, +- /* (162) |11111111|11111110|1001 */ {0xfffe9, 20}, +- /* (163) |11111111|11111111|011011 */ {0x3fffdb, 22}, +- /* (164) |11111111|11111111|011100 */ {0x3fffdc, 22}, +- /* (165) |11111111|11111111|1101000 */ {0x7fffe8, 23}, +- /* (166) |11111111|11111111|1101001 */ {0x7fffe9, 23}, +- /* (167) |11111111|11111110|11110 */ {0x1fffde, 21}, +- /* (168) |11111111|11111111|1101010 */ {0x7fffea, 23}, +- /* (169) |11111111|11111111|011101 */ {0x3fffdd, 22}, +- /* (170) |11111111|11111111|011110 */ {0x3fffde, 22}, +- /* (171) |11111111|11111111|11110000 */ {0xfffff0, 24}, +- /* (172) |11111111|11111110|11111 */ {0x1fffdf, 21}, +- /* (173) |11111111|11111111|011111 */ {0x3fffdf, 22}, +- /* (174) |11111111|11111111|1101011 */ {0x7fffeb, 23}, +- /* (175) |11111111|11111111|1101100 */ {0x7fffec, 23}, +- /* (176) |11111111|11111111|00000 */ {0x1fffe0, 21}, +- /* (177) |11111111|11111111|00001 */ {0x1fffe1, 21}, +- /* (178) |11111111|11111111|100000 */ {0x3fffe0, 22}, +- /* (179) |11111111|11111111|00010 */ {0x1fffe2, 21}, +- /* (180) |11111111|11111111|1101101 */ {0x7fffed, 23}, +- /* (181) |11111111|11111111|100001 */ {0x3fffe1, 22}, +- /* (182) |11111111|11111111|1101110 */ {0x7fffee, 23}, +- /* (183) |11111111|11111111|1101111 */ {0x7fffef, 23}, +- /* (184) |11111111|11111110|1010 */ {0xfffea, 20}, +- /* (185) |11111111|11111111|100010 */ {0x3fffe2, 22}, +- /* (186) |11111111|11111111|100011 */ {0x3fffe3, 22}, +- /* (187) |11111111|11111111|100100 */ {0x3fffe4, 22}, +- /* (188) |11111111|11111111|1110000 */ {0x7ffff0, 23}, +- /* (189) |11111111|11111111|100101 */ {0x3fffe5, 22}, +- /* (190) |11111111|11111111|100110 */ {0x3fffe6, 22}, +- /* (191) |11111111|11111111|1110001 */ {0x7ffff1, 23}, +- /* (192) |11111111|11111111|11111000|00 */ {0x3ffffe0, 26}, +- /* (193) |11111111|11111111|11111000|01 */ {0x3ffffe1, 26}, +- /* (194) |11111111|11111110|1011 */ {0xfffeb, 20}, +- /* (195) |11111111|11111110|001 */ {0x7fff1, 19}, +- /* (196) |11111111|11111111|100111 */ {0x3fffe7, 22}, +- /* (197) |11111111|11111111|1110010 */ {0x7ffff2, 23}, +- /* (198) |11111111|11111111|101000 */ {0x3fffe8, 22}, +- /* (199) |11111111|11111111|11110110|0 */ {0x1ffffec, 25}, +- /* (200) |11111111|11111111|11111000|10 */ {0x3ffffe2, 26}, +- /* (201) |11111111|11111111|11111000|11 */ {0x3ffffe3, 26}, +- /* (202) |11111111|11111111|11111001|00 */ {0x3ffffe4, 26}, +- /* (203) |11111111|11111111|11111011|110 */ {0x7ffffde, 27}, +- /* (204) |11111111|11111111|11111011|111 */ {0x7ffffdf, 27}, +- /* (205) |11111111|11111111|11111001|01 */ {0x3ffffe5, 26}, +- /* (206) |11111111|11111111|11110001 */ {0xfffff1, 24}, +- /* (207) |11111111|11111111|11110110|1 */ {0x1ffffed, 25}, +- /* (208) |11111111|11111110|010 */ {0x7fff2, 19}, +- /* (209) |11111111|11111111|00011 */ {0x1fffe3, 21}, +- /* (210) |11111111|11111111|11111001|10 */ {0x3ffffe6, 26}, +- /* (211) |11111111|11111111|11111100|000 */ {0x7ffffe0, 27}, +- /* (212) |11111111|11111111|11111100|001 */ {0x7ffffe1, 27}, +- /* (213) |11111111|11111111|11111001|11 */ {0x3ffffe7, 26}, +- /* (214) |11111111|11111111|11111100|010 */ {0x7ffffe2, 27}, +- /* (215) |11111111|11111111|11110010 */ {0xfffff2, 24}, +- /* (216) |11111111|11111111|00100 */ {0x1fffe4, 21}, +- /* (217) |11111111|11111111|00101 */ {0x1fffe5, 21}, +- /* (218) |11111111|11111111|11111010|00 */ {0x3ffffe8, 26}, +- /* (219) |11111111|11111111|11111010|01 */ {0x3ffffe9, 26}, +- /* (220) |11111111|11111111|11111111|1101 */ {0xffffffd, 28}, +- /* (221) |11111111|11111111|11111100|011 */ {0x7ffffe3, 27}, +- /* (222) |11111111|11111111|11111100|100 */ {0x7ffffe4, 27}, +- /* (223) |11111111|11111111|11111100|101 */ {0x7ffffe5, 27}, +- /* (224) |11111111|11111110|1100 */ {0xfffec, 20}, +- /* (225) |11111111|11111111|11110011 */ {0xfffff3, 24}, +- /* (226) |11111111|11111110|1101 */ {0xfffed, 20}, +- /* (227) |11111111|11111111|00110 */ {0x1fffe6, 21}, +- /* (228) |11111111|11111111|101001 */ {0x3fffe9, 22}, +- /* (229) |11111111|11111111|00111 */ {0x1fffe7, 21}, +- /* (230) |11111111|11111111|01000 */ {0x1fffe8, 21}, +- /* (231) |11111111|11111111|1110011 */ {0x7ffff3, 23}, +- /* (232) |11111111|11111111|101010 */ {0x3fffea, 22}, +- /* (233) |11111111|11111111|101011 */ {0x3fffeb, 22}, +- /* (234) |11111111|11111111|11110111|0 */ {0x1ffffee, 25}, +- /* (235) |11111111|11111111|11110111|1 */ {0x1ffffef, 25}, +- /* (236) |11111111|11111111|11110100 */ {0xfffff4, 24}, +- /* (237) |11111111|11111111|11110101 */ {0xfffff5, 24}, +- /* (238) |11111111|11111111|11111010|10 */ {0x3ffffea, 26}, +- /* (239) |11111111|11111111|1110100 */ {0x7ffff4, 23}, +- /* (240) |11111111|11111111|11111010|11 */ {0x3ffffeb, 26}, +- /* (241) |11111111|11111111|11111100|110 */ {0x7ffffe6, 27}, +- /* (242) |11111111|11111111|11111011|00 */ {0x3ffffec, 26}, +- /* (243) |11111111|11111111|11111011|01 */ {0x3ffffed, 26}, +- /* (244) |11111111|11111111|11111100|111 */ {0x7ffffe7, 27}, +- /* (245) |11111111|11111111|11111101|000 */ {0x7ffffe8, 27}, +- /* (246) |11111111|11111111|11111101|001 */ {0x7ffffe9, 27}, +- /* (247) |11111111|11111111|11111101|010 */ {0x7ffffea, 27}, +- /* (248) |11111111|11111111|11111101|011 */ {0x7ffffeb, 27}, +- /* (249) |11111111|11111111|11111111|1110 */ {0xffffffe, 28}, +- /* (250) |11111111|11111111|11111101|100 */ {0x7ffffec, 27}, +- /* (251) |11111111|11111111|11111101|101 */ {0x7ffffed, 27}, +- /* (252) |11111111|11111111|11111101|110 */ {0x7ffffee, 27}, +- /* (253) |11111111|11111111|11111101|111 */ {0x7ffffef, 27}, +- /* (254) |11111111|11111111|11111110|000 */ {0x7fffff0, 27}, +- /* (255) |11111111|11111111|11111011|10 */ {0x3ffffee, 26}, +- /*EOS (256) |11111111|11111111|11111111|111111 */ {0x3fffffff, 30} +- }; +- +- static final int[][] LCCODES = new int[CODES.length][]; +- static final char EOS = 256; +- +- // Huffman decode tree stored in a flattened char array for good +- // locality of reference. +- static final char[] tree; +- static final char[] rowsym; +- static final byte[] rowbits; +- +- // Build the Huffman lookup tree and LC TABLE +- static +- { +- System.arraycopy(CODES, 0, LCCODES, 0, CODES.length); +- for (int i = 'A'; i <= 'Z'; i++) +- { +- LCCODES[i] = LCCODES['a' + i - 'A']; +- } +- +- int r = 0; +- for (int i = 0; i < CODES.length; i++) +- { +- r += (CODES[i][1] + 7) / 8; +- } +- tree = new char[r * 256]; +- rowsym = new char[r]; +- rowbits = new byte[r]; +- +- r = 0; +- for (int sym = 0; sym < CODES.length; sym++) +- { +- int code = CODES[sym][0]; +- int len = CODES[sym][1]; +- +- int current = 0; +- +- while (len > 8) +- { +- len -= 8; +- int i = ((code >>> len) & 0xFF); +- +- int t = current * 256 + i; +- current = tree[t]; +- if (current == 0) +- { +- tree[t] = (char)++r; +- current = r; +- } +- } +- +- int terminal = ++r; +- rowsym[r] = (char)sym; +- int b = len & 0x07; +- int terminalBits = b == 0 ? 8 : b; +- +- rowbits[r] = (byte)terminalBits; +- int shift = 8 - len; +- int start = current * 256 + ((code << shift) & 0xFF); +- int end = start + (1 << shift); +- for (int i = start; i < end; i++) +- { +- tree[i] = (char)terminal; +- } +- } +- } +- +- public static String decode(ByteBuffer buffer) throws HpackException.CompressionException +- { +- return decode(buffer, buffer.remaining()); +- } +- +- public static String decode(ByteBuffer buffer, int length) throws HpackException.CompressionException +- { +- Utf8StringBuilder utf8 = new Utf8StringBuilder(length * 2); +- int node = 0; +- int current = 0; +- int bits = 0; +- +- for (int i = 0; i < length; i++) +- { +- int b = buffer.get() & 0xFF; +- current = (current << 8) | b; +- bits += 8; +- while (bits >= 8) +- { +- int c = (current >>> (bits - 8)) & 0xFF; +- node = tree[node * 256 + c]; +- if (rowbits[node] != 0) +- { +- if (rowsym[node] == EOS) +- throw new HpackException.CompressionException("EOS in content"); +- +- // terminal node +- utf8.append((byte)(0xFF & rowsym[node])); +- bits -= rowbits[node]; +- node = 0; +- } +- else +- { +- // non-terminal node +- bits -= 8; +- } +- } +- } +- +- while (bits > 0) +- { +- int c = (current << (8 - bits)) & 0xFF; +- int lastNode = node; +- node = tree[node * 256 + c]; +- +- if (rowbits[node] == 0 || rowbits[node] > bits) +- { +- int requiredPadding = 0; +- for (int i = 0; i < bits; i++) +- { +- requiredPadding = (requiredPadding << 1) | 1; +- } +- +- if ((c >> (8 - bits)) != requiredPadding) +- throw new HpackException.CompressionException("Incorrect padding"); +- +- node = lastNode; +- break; +- } +- +- utf8.append((byte)(0xFF & rowsym[node])); +- bits -= rowbits[node]; +- node = 0; +- } +- +- if (node != 0) +- throw new HpackException.CompressionException("Bad termination"); +- +- return utf8.toString(); +- } +- +- public static int octetsNeeded(String s) +- { +- return octetsNeeded(CODES, s); +- } +- +- public static int octetsNeeded(byte[] b) +- { +- return octetsNeeded(CODES, b); +- } +- +- public static void encode(ByteBuffer buffer, String s) +- { +- encode(CODES, buffer, s); +- } +- +- public static void encode(ByteBuffer buffer, byte[] b) +- { +- encode(CODES, buffer, b); +- } +- +- public static int octetsNeededLC(String s) +- { +- return octetsNeeded(LCCODES, s); +- } +- +- public static void encodeLC(ByteBuffer buffer, String s) +- { +- encode(LCCODES, buffer, s); +- } +- +- private static int octetsNeeded(final int[][] table, String s) +- { +- int needed = 0; +- int len = s.length(); +- for (int i = 0; i < len; i++) +- { +- char c = s.charAt(i); +- if (c >= 128 || c < ' ') +- return -1; +- needed += table[c][1]; +- } +- +- return (needed + 7) / 8; +- } +- +- private static int octetsNeeded(final int[][] table, byte[] b) +- { +- int needed = 0; +- int len = b.length; +- for (int i = 0; i < len; i++) +- { +- int c = 0xFF & b[i]; +- needed += table[c][1]; +- } +- return (needed + 7) / 8; +- } +- +- /** +- * @param table The table to encode by +- * @param buffer The buffer to encode to +- * @param s The string to encode +- */ +- private static void encode(final int[][] table, ByteBuffer buffer, String s) +- { +- long current = 0; +- int n = 0; +- int len = s.length(); +- for (int i = 0; i < len; i++) +- { +- char c = s.charAt(i); +- if (c >= 128 || c < ' ') +- throw new IllegalArgumentException(); +- int code = table[c][0]; +- int bits = table[c][1]; +- +- current <<= bits; +- current |= code; +- n += bits; +- +- while (n >= 8) +- { +- n -= 8; +- buffer.put((byte)(current >> n)); +- } +- } +- +- if (n > 0) +- { +- current <<= (8 - n); +- current |= (0xFF >>> n); +- buffer.put((byte)(current)); +- } +- } +- +- private static void encode(final int[][] table, ByteBuffer buffer, byte[] b) +- { +- long current = 0; +- int n = 0; +- +- int len = b.length; +- for (int i = 0; i < len; i++) +- { +- int c = 0xFF & b[i]; +- int code = table[c][0]; +- int bits = table[c][1]; +- +- current <<= bits; +- current |= code; +- n += bits; +- +- while (n >= 8) +- { +- n -= 8; +- buffer.put((byte)(current >> n)); +- } +- } +- +- if (n > 0) +- { +- current <<= (8 - n); +- current |= (0xFF >>> n); +- buffer.put((byte)(current)); +- } +- } +-} +diff --git a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java +index df45309..9ed7253 100644 +--- a/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java ++++ b/jetty-http2/http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/MetaDataBuilder.java +@@ -29,7 +29,7 @@ import org.eclipse.jetty.http2.hpack.HpackException.SessionException; + + public class MetaDataBuilder + { +- private final int _maxSize; ++ private int _maxSize; + private int _size; + private Integer _status; + private String _method; +@@ -60,6 +60,11 @@ public class MetaDataBuilder + return _maxSize; + } + ++ public void setMaxSize(int maxSize) ++ { ++ _maxSize = maxSize; ++ } ++ + /** + * Get the size. + * +@@ -70,17 +75,18 @@ public class MetaDataBuilder + return _size; + } + +- public void emit(HttpField field) throws HpackException.SessionException ++ public void emit(HttpField field) throws SessionException + { + HttpHeader header = field.getHeader(); + String name = field.getName(); +- if (name == null || name.length() == 0) +- throw new HpackException.SessionException("Header size 0"); ++ if (name == null || name.isEmpty()) ++ throw new SessionException("Header size 0"); + String value = field.getValue(); + int fieldSize = name.length() + (value == null ? 0 : value.length()); + _size += fieldSize + 32; +- if (_size > _maxSize) +- throw new HpackException.SessionException("Header size %d > %d", _size, _maxSize); ++ int maxSize = getMaxSize(); ++ if (maxSize > 0 && _size > maxSize) ++ throw new SessionException("Header size %d > %d", _size, maxSize); + + if (field instanceof StaticTableHttpField) + { +@@ -89,7 +95,7 @@ public class MetaDataBuilder + { + case C_STATUS: + if (checkPseudoHeader(header, _status)) +- _status = (Integer)staticField.getStaticValue(); ++ _status = staticField.getIntValue(); + _response = true; + break; + +@@ -157,7 +163,7 @@ public class MetaDataBuilder + case C_PATH: + if (checkPseudoHeader(header, _path)) + { +- if (value != null && value.length() > 0) ++ if (value != null && !value.isEmpty()) + _path = value; + else + streamException("No Path"); +@@ -201,7 +207,7 @@ public class MetaDataBuilder + } + } + +- protected void streamException(String messageFormat, Object... args) ++ public void streamException(String messageFormat, Object... args) + { + HpackException.StreamException stream = new HpackException.StreamException(messageFormat, args); + if (_streamException == null) +@@ -267,23 +273,7 @@ public cla