[VOTE][RESULT] Release Apache Tomcat 9.0.72
The following votes were cast: Binding: +1: isapir, fschumacher, markt, remm Non-binding: +1: lihan No other votes were cast. The vote therefore passes. Thanks to everyone who contributed to this release. Rémy - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r60268 - /dev/tomcat/tomcat-9/v9.0.72/ /release/tomcat/tomcat-9/v9.0.72/
Author: remm Date: Thu Feb 23 09:15:02 2023 New Revision: 60268 Log: Release Apache Tomcat 9.0.72 Added: release/tomcat/tomcat-9/v9.0.72/ - copied from r60267, dev/tomcat/tomcat-9/v9.0.72/ Removed: dev/tomcat/tomcat-9/v9.0.72/ - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1907823 - in /tomcat/site/trunk: ./ docs/ xdocs/
Author: remm Date: Thu Feb 23 09:27:28 2023 New Revision: 1907823 URL: http://svn.apache.org/viewvc?rev=1907823&view=rev Log: Update site for 9.0.72 release Modified: tomcat/site/trunk/build.properties.default tomcat/site/trunk/docs/doap_Tomcat.rdf tomcat/site/trunk/docs/download-90.html tomcat/site/trunk/docs/index.html tomcat/site/trunk/docs/migration-9.html tomcat/site/trunk/docs/oldnews.html tomcat/site/trunk/docs/whichversion.html tomcat/site/trunk/xdocs/doap_Tomcat.rdf tomcat/site/trunk/xdocs/download-90.xml tomcat/site/trunk/xdocs/index.xml tomcat/site/trunk/xdocs/migration-9.xml tomcat/site/trunk/xdocs/oldnews.xml tomcat/site/trunk/xdocs/whichversion.xml Modified: tomcat/site/trunk/build.properties.default URL: http://svn.apache.org/viewvc/tomcat/site/trunk/build.properties.default?rev=1907823&r1=1907822&r2=1907823&view=diff == --- tomcat/site/trunk/build.properties.default (original) +++ tomcat/site/trunk/build.properties.default Thu Feb 23 09:27:28 2023 @@ -37,7 +37,7 @@ tomcat.loc=https://downloads.apache.org/ # - Tomcat versions - tomcat8.5=8.5.85 -tomcat9.0=9.0.71 +tomcat9.0=9.0.72 tomcat10.0=10.0.27 tomcat10.1=10.1.5 tomcat11.0=11.0.0-M1 Modified: tomcat/site/trunk/docs/doap_Tomcat.rdf URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/doap_Tomcat.rdf?rev=1907823&r1=1907822&r2=1907823&view=diff == --- tomcat/site/trunk/docs/doap_Tomcat.rdf (original) +++ tomcat/site/trunk/docs/doap_Tomcat.rdf Thu Feb 23 09:27:28 2023 @@ -74,8 +74,8 @@ Latest Stable 9.0.x Release -2023-01-13 -9.0.71 +2023-02-23 +9.0.72 Modified: tomcat/site/trunk/docs/download-90.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/download-90.html?rev=1907823&r1=1907822&r2=1907823&view=diff == --- tomcat/site/trunk/docs/download-90.html (original) +++ tomcat/site/trunk/docs/download-90.html Thu Feb 23 09:27:28 2023 @@ -10,7 +10,7 @@ Quick Navigation -[define v]9.0.71[end] +[define v]9.0.72[end] https://downloads.apache.org/tomcat/tomcat-9/KEYS";>KEYS | [v] | Browse | Modified: tomcat/site/trunk/docs/index.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/index.html?rev=1907823&r1=1907822&r2=1907823&view=diff == --- tomcat/site/trunk/docs/index.html (original) +++ tomcat/site/trunk/docs/index.html Thu Feb 23 09:27:28 2023 @@ -34,6 +34,29 @@ wiki page. Apache Tomcat, Tomcat, Apache, the Apache feather, and the Apache Tomcat project logo are trademarks of the Apache Software Foundation. +2023-02-23 Tomcat 9.0.72 Released + +The Apache Tomcat Project is proud to announce the release of version 9.0.72 +of Apache Tomcat. This release implements specifications that are part of the +Java EE 8 platform. The notable changes compared to 9.0.71 include: + +Add an error report valve that allows redirecting to or proxying from an + external web server. +Log basic information for each configured TLS certificate when + Tomcat starts. +Add the shared address space specified by RFC 6598 (100.64.0.0/10) + to the list of trusted proxies for RemoteIPValve/Filter. +Limit access to examples web application to localhost by default. + + +Full details of these changes, and all the other changes, are available in the +Tomcat 9 +changelog. + + + +https://tomcat.apache.org/download-90.cgi";>Download + 2023-02-13 Tomcat Native 2.0.3 Released The Apache Tomcat Project is proud to announce the release of version 2.0.3 of @@ -135,35 +158,6 @@ changelog. https://tomcat.apache.org/download-10.cgi";>Download -2023-01-13 Tomcat 9.0.71 Released - -The Apache Tomcat Project is proud to announce the release of version 9.0.71 -of Apache Tomcat. This release implements specifications that are part of the -Java EE 8 platform. The notable changes compared to 9.0.70 include: - -Correct a regression in the refactoring that replaced the use of the - URL constructors. The regression broke lookups for resources that - contained one or more characters in their name that required escaping - when used in a URI path. -When resetting an HTTP/2 stream because the final response has been - generated before the request has been fully read, use the HTTP/2 error - code NO_ERROR so that client does not discard the response. Based on a - suggestion by Lorenzo Dalla Vecchia. -Change the default of the org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED - system property to true unless the EL library is running on Tomcat in - which case the default remains false as the EL library is already - called from within a privileged block and skipping the
svn commit: r1907824 - in /tomcat/site/trunk/docs/tomcat-9.0-doc: ./ annotationapi/ annotationapi/javax/annotation/ annotationapi/javax/annotation/security/ annotationapi/javax/annotation/sql/ api/ ap
Author: remm Date: Thu Feb 23 09:33:36 2023 New Revision: 1907824 URL: http://svn.apache.org/viewvc?rev=1907824&view=rev Log: Docs update for 9.0.72 [This commit notification would consist of 112 parts, which exceeds the limit of 50 ones, so it was shortened to the summary.] - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1907825 - /tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/valves/ProxyErrorReportValve.html
Author: remm Date: Thu Feb 23 09:34:42 2023 New Revision: 1907825 URL: http://svn.apache.org/viewvc?rev=1907825&view=rev Log: Docs update for 9.0.72 Added: tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/valves/ProxyErrorReportValve.html Added: tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/valves/ProxyErrorReportValve.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/valves/ProxyErrorReportValve.html?rev=1907825&view=auto == --- tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/valves/ProxyErrorReportValve.html (added) +++ tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/valves/ProxyErrorReportValve.html Thu Feb 23 09:34:42 2023 @@ -0,0 +1,553 @@ + + + + + +ProxyErrorReportValve (Apache Tomcat 9.0.72 API Documentation) + + + + + + + + + + + + + +var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var altColor = "altColor"; +var rowColor = "rowColor"; +var tableTab = "tableTab"; +var activeTableTab = "activeTableTab"; +var pathtoroot = "../../../../"; +var useModuleDirectories = true; +loadScripts(document, 'script'); + +JavaScript is disabled on your browser. + + + + + + + + +Skip navigation links + + + + +Overview +Package +Class +Tree +Deprecated +Index +Help + +Apache Tomcat 9.0.72 + + + +All Classes + + +SEARCH: + + + + + + + + +JavaScript is disabled on your browser. + + + + +Summary: +Nested | +Field | +Constr | +Method + + +Detail: +Field | +Constr | +Method + + + + + + + + + + + + + + + +Package org.apache.catalina.valves +Class ProxyErrorReportValve + + + +java.lang.Object + + +org.apache.catalina.util.LifecycleBase + + +org.apache.catalina.util.LifecycleMBeanBase + + +org.apache.catalina.valves.ValveBase + + +org.apache.catalina.valves.ErrorReportValve + + +org.apache.catalina.valves.ProxyErrorReportValve + + + + + + + + + + + + + + + +All Implemented Interfaces: +javax.management.MBeanRegistration, Contained, JmxEnabled, Lifecycle, Valve + + +public class ProxyErrorReportValve +extends ErrorReportValve + + Implementation of a Valve that proxies or redirects error reporting to other urls. + + + This Valve should be attached at the Host level, although it will work if attached to a Context. + + + + + + + + + + + + + +Nested Class Summary + + + + +Nested classes/interfaces inherited from interface org.apache.catalina.Lifecycle +Lifecycle.SingleUse + + + + + + + + + + +Field Summary + +Fields + +Modifier and Type +Field +Description + + +protected boolean +usePropertiesFile + +Use a properties file for the URLs. + + + +protected boolean +useRedirect + +Use a redirect or proxy the response to the specified location. + + + + + + + +Fields inherited from class org.apache.catalina.valves.ValveBase +asyncSupported, container, containerLog, next, sm + + + + + +Fields inherited from class org.apache.catalina.util.LifecycleMBeanBase +mserver + + + + + +Fields inherited from interface org.apache.catalina.Lifecycle +AFTER_DESTROY_EVENT, AFTER_INIT_EVENT, AFTER_START_EVENT, AFTER_STOP_EVENT, BEFORE_DESTROY_EVENT, BEFORE_INIT_EVENT, BEFORE_START_EVENT, BEFORE_STOP_EVENT, CONFIGURE_START_EVENT, CONFIGURE_STOP_EVENT, PERIODIC_EVENT, START_EVENT, STOP_EVENT + + + + + + + + + + +Constructor Summary + +Constructors + +Constructor +Description + + +ProxyErrorReportValve() + + + + + + + + + + + + +Method Summary + +All Methods Instance Methods Concrete Methods + +Modifier and Type +Method +Description + + +boolean +getUsePropertiesFile() + + + +boolean +getUseRedirect() + + + +protected void +report(Request request, + Response response, + java.lang.Throwable throwable) + +Prints out an error report. + + + +void +setUsePropertiesFile(boolean usePropertiesFile) + + + +void +setUseRedirect(boolean useRedirect) + + + + + + + +Methods inherited from class org.apache.catalina.valves.ErrorReportValve +findErrorPage, getPartialServletStackTrace, getProperty, invoke, isShowReport, isShowServerInfo, setProperty, setShowReport, setShowServerInfo + + + + + +Methods inherited from class org.apache.catalina.valves.ValveBase +backgroundProcess, getContainer, getDomainInternal, getNext, getObjectNameKeyProperties, initInternal, isAsyncSupported, setAsyncSupported, setContainer, setNex
[tomcat] branch 9.0.x updated: Add 9.0.72 date
This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new eccebb57ff Add 9.0.72 date eccebb57ff is described below commit eccebb57ffe2ded122da6ae30ea7192cceada3cb Author: remm AuthorDate: Thu Feb 23 11:03:06 2023 +0100 Add 9.0.72 date --- webapps/docs/changelog.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 7662464b09..5438c9ee38 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -115,7 +115,7 @@ - + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[VOTE][RESULT] Release Apache Tomcat 11.0.0-M3
The following votes were cast: Binding: +1: isapir, markt, fschumacher, remm Non-binding: +1: lihan, Dimitris Soumis No other votes were cast. The release vote therefore passes. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Add release date for 11.0.0-M3
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/main by this push: new 0e892f2f77 Add release date for 11.0.0-M3 0e892f2f77 is described below commit 0e892f2f7756a42dd063f6f6847a428f9690fc4d Author: Mark Thomas AuthorDate: Thu Feb 23 10:23:41 2023 + Add release date for 11.0.0-M3 --- webapps/docs/changelog.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 176b104c6c..ea885486e9 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -126,7 +126,7 @@ - + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r60269 - /dev/tomcat/tomcat-11/v11.0.0-M3/ /release/tomcat/tomcat-11/v11.0.0-M3/
Author: markt Date: Thu Feb 23 10:25:09 2023 New Revision: 60269 Log: Release Apache Tomcat 11.0.0-Me (alpha) Added: release/tomcat/tomcat-11/v11.0.0-M3/ - copied from r60268, dev/tomcat/tomcat-11/v11.0.0-M3/ Removed: dev/tomcat/tomcat-11/v11.0.0-M3/ - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1907827 - in /tomcat/site/trunk: ./ docs/tomcat-11.0-doc/ docs/tomcat-11.0-doc/WEB-INF/ docs/tomcat-11.0-doc/annotationapi/ docs/tomcat-11.0-doc/annotationapi/jakarta/annotation/ docs/tom
Author: markt Date: Thu Feb 23 11:01:47 2023 New Revision: 1907827 URL: http://svn.apache.org/viewvc?rev=1907827&view=rev Log: Update docs for Tomcat 11.0.0-M3 [This commit notification would consist of 1280 parts, which exceeds the limit of 50 ones, so it was shortened to the summary.] - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[ANN] Apache Tomcat 9.0.72 available
The Apache Tomcat team announces the immediate availability of Apache Tomcat 9.0.72. Apache Tomcat 9 is an open source software implementation of the Java Servlet, JavaServer Pages, Java Unified Expression Language, Java WebSocket and JASPIC technologies. Apache Tomcat 9.0.72 is a bugfix and feature release. The notable changes compared to 9.0.71 include: - Add an error report valve that allows redirecting to or proxying from an external web server. - Log basic information for each configured TLS certificate when Tomcat starts. - Add the shared address space specified by RFC 6598 (100.64.0.0/10) to the list of trusted proxies for RemoteIPValve/Filter. - Limit access to the examples web application to localhost by default. Along with lots of other bug fixes and improvements. Please refer to the change log for the complete list of changes: https://tomcat.apache.org/tomcat-9.0-doc/changelog.html Downloads: https://tomcat.apache.org/download-90.cgi Migration guides from Apache Tomcat 7.x and 8.x: https://tomcat.apache.org/migration.html Enjoy! - The Apache Tomcat team - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1907829 - in /tomcat/site/trunk: docs/ xdocs/
Author: markt Date: Thu Feb 23 13:58:55 2023 New Revision: 1907829 URL: http://svn.apache.org/viewvc?rev=1907829&view=rev Log: Update site for 11.0.0-M3 release Modified: tomcat/site/trunk/docs/download-11.html tomcat/site/trunk/docs/index.html tomcat/site/trunk/docs/migration-11.0.html tomcat/site/trunk/docs/oldnews-2022.html tomcat/site/trunk/docs/whichversion.html tomcat/site/trunk/xdocs/download-11.xml tomcat/site/trunk/xdocs/index.xml tomcat/site/trunk/xdocs/migration-11.0.xml tomcat/site/trunk/xdocs/oldnews-2022.xml tomcat/site/trunk/xdocs/whichversion.xml Modified: tomcat/site/trunk/docs/download-11.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/download-11.html?rev=1907829&r1=1907828&r2=1907829&view=diff == --- tomcat/site/trunk/docs/download-11.html (original) +++ tomcat/site/trunk/docs/download-11.html Thu Feb 23 13:58:55 2023 @@ -19,7 +19,7 @@ Quick Navigation -[define v]11.0.0-M1[end] +[define v]11.0.0-M3[end] https://downloads.apache.org/tomcat/tomcat-11/KEYS";>KEYS | [v] (alpha) | Browse | Modified: tomcat/site/trunk/docs/index.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/index.html?rev=1907829&r1=1907828&r2=1907829&view=diff == --- tomcat/site/trunk/docs/index.html (original) +++ tomcat/site/trunk/docs/index.html Thu Feb 23 13:58:55 2023 @@ -57,6 +57,35 @@ changelog. https://tomcat.apache.org/download-90.cgi";>Download +2023-02-23 Tomcat 11.0.0-M3 Released + +The Apache Tomcat Project is proud to announce the release of version 11.0.0-M3 +(alpha) of Apache Tomcat. This release is a milestone release and is targeted at +Jakarta EE 11. +Users of Tomcat 10 onwards should be aware that, as a result of the move from +Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse +Foundation, the primary package for all implemented APIs has changed from +javax.* to jakarta.*. This will almost certainly +require code changes to enable applications to migrate from Tomcat 9 and earlier +to Tomcat 10 and later. A +https://github.com/apache/tomcat-jakartaee-migration";>migration +tool is under development to aid this process. +The notable changes in this release are: + +Increase the minimum supported Java version to Java 17. +Remove support for starting Tomcat under a SecurityManager. +Remove JAX-RPC support which was removed from the Jakarta EE platform for +Jakarta EE 9 + + +Full details of these changes, and all the other changes, are available in the +Tomcat 11 +(alpha) changelog. + + + +https://tomcat.apache.org/download-11.cgi";>Download + 2023-02-13 Tomcat Native 2.0.3 Released The Apache Tomcat Project is proud to announce the release of version 2.0.3 of @@ -156,38 +185,6 @@ changelog. -https://tomcat.apache.org/download-10.cgi";>Download - -2022-12-05 Tomcat 11.0.0-M1 Released - -The Apache Tomcat Project is proud to announce the release of version 11.0.0-M1 -(alpha) of Apache Tomcat. This release is a milestone release and is targeted at -Jakarta EE 11. -Users of Tomcat 10 onwards should be aware that, as a result of the move from -Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse -Foundation, the primary package for all implemented APIs has changed from -javax.* to jakarta.*. This will almost certainly -require code changes to enable applications to migrate from Tomcat 9 and earlier -to Tomcat 10 and later. A -https://github.com/apache/tomcat-jakartaee-migration";>migration -tool is under development to aid this process. -The notable changes in this release are: - -Alignment with the current development versions of the Jakarta Servlet, -Pages and Expression Language specifications. This includes removal of -deprecated code and addition of the jakarta.servlet.error.query_string -attribute for error dispatches -BASIC authentication now uses UTF-8 by default -Conversions from bytes to characters now trigger exceptions rather than -replacement for invalid byte sequences for the given encoding - - -Full details of these changes, and all the other changes, are available in the -Tomcat 11 -(alpha) changelog. - - - https://tomcat.apache.org/download-10.cgi";>Download 2022-12-05 Tomcat Migration Tool for Jakarta EE 1.0.6 Released Modified: tomcat/site/trunk/docs/migration-11.0.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/migration-11.0.html?rev=1907829&r1=1907828&r2=1907829&view=diff == --- tomcat/site/trunk/docs/migration-11.0.html (original) +++ tomcat/site/trunk/docs/migration-11.0.html Thu Feb 23 13:58:55 2023 @@ -139,11 +139,11 @@ versions of Apache Tomcat. Old version: 11.0.0-M1 -11.0.0-M1 +11.0.0-M3 , new version: 11.0.0-
[ANN] Apache Tomcat 11.0.0-M3 (alpha) available
The Apache Tomcat team announces the immediate availability of Apache Tomcat 11.0.0-M3 (alpha). Apache Tomcat 11 is an open source software implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Authentication and Jakarta Annotations specifications. Users of Tomcat 10 onwards should be aware that, as a result of the move from Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse Foundation, the primary package for all implemented APIs has changed from javax.* to jakarta.*. This will almost certainly require code changes to enable applications to migrate from Tomcat 9 and earlier to Tomcat 10 and later. A migration tool is under development to aid this process. Apache Tomcat 11.0.0-M3 is a first milestone release of the 11.0.x branch and has been made to provide users with early access to the new features in Apache Tomcat 11.0.x so that they may provide feedback. The notable changes compared to 11.0.0-M1 include: - Increase the minimum supported Java version to Java 17. - Remove support for starting Tomcat under a SecurityManager. - Remove JAX-RPC support which was removed from the Jakarta EE platform for Jakarta EE 9 Please refer to the change log for the complete list of changes: http://tomcat.apache.org/tomcat-11.0-doc/changelog.html Downloads: http://tomcat.apache.org/download-11.cgi Migration guides from Apache Tomcat 8.5.x, 9.0.x and 10.1.x: http://tomcat.apache.org/migration.html Enjoy! - The Apache Tomcat team - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Validate the scheme pseudo-header in HTTP/2
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/main by this push: new 3e19b6947c Validate the scheme pseudo-header in HTTP/2 3e19b6947c is described below commit 3e19b6947c067c896c978d56f645d5f6f8751bb5 Author: Mark Thomas AuthorDate: Thu Feb 23 15:22:10 2023 + Validate the scheme pseudo-header in HTTP/2 --- java/org/apache/coyote/http2/Stream.java | 7 ++ java/org/apache/coyote/http2/StreamProcessor.java | 6 ++ .../apache/tomcat/util/http/parser/HttpParser.java | 51 ++ .../apache/coyote/http2/TestHttp2Section_8_1.java | 80 +- webapps/docs/changelog.xml | 8 +++ 5 files changed, 151 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index 4a82c4a239..c5cc5f5f2f 100644 --- a/java/org/apache/coyote/http2/Stream.java +++ b/java/org/apache/coyote/http2/Stream.java @@ -149,6 +149,13 @@ class Stream extends AbstractNonZeroStream implements HeaderEmitter { private void prepareRequest() { +if (coyoteRequest.scheme().isNull()) { +if (handler.getProtocol().getHttp11Protocol().isSSLEnabled()) { +coyoteRequest.scheme().setString("https"); +} else { +coyoteRequest.scheme().setString("http"); +} +} MessageBytes hostValueMB = coyoteRequest.getMimeHeaders().getUniqueValue("host"); if (hostValueMB == null) { throw new IllegalArgumentException(); diff --git a/java/org/apache/coyote/http2/StreamProcessor.java b/java/org/apache/coyote/http2/StreamProcessor.java index 7398ce0de5..affc460a7b 100644 --- a/java/org/apache/coyote/http2/StreamProcessor.java +++ b/java/org/apache/coyote/http2/StreamProcessor.java @@ -484,6 +484,12 @@ class StreamProcessor extends AbstractProcessor { return false; } +// Scheme must adhere to RFC 3986 +String scheme = request.scheme().toString(); +if (!HttpParser.isScheme(scheme)) { +return false; +} + // Invalid character in request target // (other checks such as valid %nn happen later) ByteChunk bc = request.requestURI().getByteChunk(); diff --git a/java/org/apache/tomcat/util/http/parser/HttpParser.java b/java/org/apache/tomcat/util/http/parser/HttpParser.java index 0758dd5915..6975e3b53f 100644 --- a/java/org/apache/tomcat/util/http/parser/HttpParser.java +++ b/java/org/apache/tomcat/util/http/parser/HttpParser.java @@ -47,6 +47,7 @@ public class HttpParser { private static final boolean[] IS_HTTP_PROTOCOL = new boolean[ARRAY_SIZE]; private static final boolean[] IS_ALPHA = new boolean[ARRAY_SIZE]; private static final boolean[] IS_NUMERIC = new boolean[ARRAY_SIZE]; +private static final boolean[] IS_SCHEME = new boolean[ARRAY_SIZE]; private static final boolean[] IS_UNRESERVED = new boolean[ARRAY_SIZE]; private static final boolean[] IS_SUBDELIM = new boolean[ARRAY_SIZE]; private static final boolean[] IS_USERINFO = new boolean[ARRAY_SIZE]; @@ -94,6 +95,10 @@ public class HttpParser { IS_ALPHA[i] = true; } +if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '+' || i == '-' || i == '.') { +IS_SCHEME[i] = true; +} + if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '-' || i == '.' || i == '_' || i == '~') { IS_UNRESERVED[i] = true; } @@ -319,6 +324,52 @@ public class HttpParser { } +public static boolean isScheme(int c) { +// Fast for valid scheme characters, slower for some incorrect +// ones +try { +return IS_SCHEME[c]; +} catch (ArrayIndexOutOfBoundsException ex) { +return false; +} +} + + +/** + * Is the provided String a scheme as per RFC 3986? + * + * Note: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + * + * Since a scheme requires at least 1 ALPHA, {@code null} and the empty + * string ({@code ""}) are not considered to be valid tokens. + * + * @param s The string to test + * + * @return {@code true} if the string is a valid scheme, otherwise + * {@code false} + */ +public static boolean isScheme(String s) { +if (s == null) { +return false; +} +if (s.isEmpty()) { +return false; +} +char[] chars = s.toCharArray(); +if (!isAlpha(chars[0])) { +return false; +} +if (chars.length > 1) { +for (int i = 1; i < chars.length; i++) { +if (!isScheme(chars[i])) { +return false; +} +} +} +
[tomcat] branch 10.1.x updated: Validate the scheme pseudo-header in HTTP/2
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new e7388e78d0 Validate the scheme pseudo-header in HTTP/2 e7388e78d0 is described below commit e7388e78d0177d74e9c4111c3fe34ccb9d00d795 Author: Mark Thomas AuthorDate: Thu Feb 23 15:22:10 2023 + Validate the scheme pseudo-header in HTTP/2 --- java/org/apache/coyote/http2/Stream.java | 7 ++ java/org/apache/coyote/http2/StreamProcessor.java | 6 ++ .../apache/tomcat/util/http/parser/HttpParser.java | 51 ++ .../apache/coyote/http2/TestHttp2Section_8_1.java | 80 +- webapps/docs/changelog.xml | 8 +++ 5 files changed, 151 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index c40581c545..a8b59538a6 100644 --- a/java/org/apache/coyote/http2/Stream.java +++ b/java/org/apache/coyote/http2/Stream.java @@ -148,6 +148,13 @@ class Stream extends AbstractNonZeroStream implements HeaderEmitter { private void prepareRequest() { +if (coyoteRequest.scheme().isNull()) { +if (handler.getProtocol().getHttp11Protocol().isSSLEnabled()) { +coyoteRequest.scheme().setString("https"); +} else { +coyoteRequest.scheme().setString("http"); +} +} MessageBytes hostValueMB = coyoteRequest.getMimeHeaders().getUniqueValue("host"); if (hostValueMB == null) { throw new IllegalArgumentException(); diff --git a/java/org/apache/coyote/http2/StreamProcessor.java b/java/org/apache/coyote/http2/StreamProcessor.java index 1a991a05ab..303aff7692 100644 --- a/java/org/apache/coyote/http2/StreamProcessor.java +++ b/java/org/apache/coyote/http2/StreamProcessor.java @@ -477,6 +477,12 @@ class StreamProcessor extends AbstractProcessor { return false; } +// Scheme must adhere to RFC 3986 +String scheme = request.scheme().toString(); +if (!HttpParser.isScheme(scheme)) { +return false; +} + // Invalid character in request target // (other checks such as valid %nn happen later) ByteChunk bc = request.requestURI().getByteChunk(); diff --git a/java/org/apache/tomcat/util/http/parser/HttpParser.java b/java/org/apache/tomcat/util/http/parser/HttpParser.java index 0758dd5915..6975e3b53f 100644 --- a/java/org/apache/tomcat/util/http/parser/HttpParser.java +++ b/java/org/apache/tomcat/util/http/parser/HttpParser.java @@ -47,6 +47,7 @@ public class HttpParser { private static final boolean[] IS_HTTP_PROTOCOL = new boolean[ARRAY_SIZE]; private static final boolean[] IS_ALPHA = new boolean[ARRAY_SIZE]; private static final boolean[] IS_NUMERIC = new boolean[ARRAY_SIZE]; +private static final boolean[] IS_SCHEME = new boolean[ARRAY_SIZE]; private static final boolean[] IS_UNRESERVED = new boolean[ARRAY_SIZE]; private static final boolean[] IS_SUBDELIM = new boolean[ARRAY_SIZE]; private static final boolean[] IS_USERINFO = new boolean[ARRAY_SIZE]; @@ -94,6 +95,10 @@ public class HttpParser { IS_ALPHA[i] = true; } +if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '+' || i == '-' || i == '.') { +IS_SCHEME[i] = true; +} + if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '-' || i == '.' || i == '_' || i == '~') { IS_UNRESERVED[i] = true; } @@ -319,6 +324,52 @@ public class HttpParser { } +public static boolean isScheme(int c) { +// Fast for valid scheme characters, slower for some incorrect +// ones +try { +return IS_SCHEME[c]; +} catch (ArrayIndexOutOfBoundsException ex) { +return false; +} +} + + +/** + * Is the provided String a scheme as per RFC 3986? + * + * Note: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + * + * Since a scheme requires at least 1 ALPHA, {@code null} and the empty + * string ({@code ""}) are not considered to be valid tokens. + * + * @param s The string to test + * + * @return {@code true} if the string is a valid scheme, otherwise + * {@code false} + */ +public static boolean isScheme(String s) { +if (s == null) { +return false; +} +if (s.isEmpty()) { +return false; +} +char[] chars = s.toCharArray(); +if (!isAlpha(chars[0])) { +return false; +} +if (chars.length > 1) { +for (int i = 1; i < chars.length; i++) { +if (!isScheme(chars[i])) { +return false; +} +} +}
[tomcat] branch 9.0.x updated: Validate the scheme pseudo-header in HTTP/2
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new 9c38aac33a Validate the scheme pseudo-header in HTTP/2 9c38aac33a is described below commit 9c38aac33ae02da550d459d011d3ffb030a46147 Author: Mark Thomas AuthorDate: Thu Feb 23 15:22:10 2023 + Validate the scheme pseudo-header in HTTP/2 --- java/org/apache/coyote/http2/Stream.java | 7 ++ java/org/apache/coyote/http2/StreamProcessor.java | 6 ++ .../apache/tomcat/util/http/parser/HttpParser.java | 51 ++ .../apache/coyote/http2/TestHttp2Section_8_1.java | 80 +- webapps/docs/changelog.xml | 8 +++ 5 files changed, 151 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index 1b8202871f..593c05cdf7 100644 --- a/java/org/apache/coyote/http2/Stream.java +++ b/java/org/apache/coyote/http2/Stream.java @@ -148,6 +148,13 @@ class Stream extends AbstractNonZeroStream implements HeaderEmitter { private void prepareRequest() { +if (coyoteRequest.scheme().isNull()) { +if (handler.getProtocol().getHttp11Protocol().isSSLEnabled()) { +coyoteRequest.scheme().setString("https"); +} else { +coyoteRequest.scheme().setString("http"); +} +} MessageBytes hostValueMB = coyoteRequest.getMimeHeaders().getUniqueValue("host"); if (hostValueMB == null) { throw new IllegalArgumentException(); diff --git a/java/org/apache/coyote/http2/StreamProcessor.java b/java/org/apache/coyote/http2/StreamProcessor.java index 3e969cc5ea..675a62e18d 100644 --- a/java/org/apache/coyote/http2/StreamProcessor.java +++ b/java/org/apache/coyote/http2/StreamProcessor.java @@ -478,6 +478,12 @@ class StreamProcessor extends AbstractProcessor { return false; } +// Scheme must adhere to RFC 3986 +String scheme = request.scheme().toString(); +if (!HttpParser.isScheme(scheme)) { +return false; +} + // Invalid character in request target // (other checks such as valid %nn happen later) ByteChunk bc = request.requestURI().getByteChunk(); diff --git a/java/org/apache/tomcat/util/http/parser/HttpParser.java b/java/org/apache/tomcat/util/http/parser/HttpParser.java index 0758dd5915..6975e3b53f 100644 --- a/java/org/apache/tomcat/util/http/parser/HttpParser.java +++ b/java/org/apache/tomcat/util/http/parser/HttpParser.java @@ -47,6 +47,7 @@ public class HttpParser { private static final boolean[] IS_HTTP_PROTOCOL = new boolean[ARRAY_SIZE]; private static final boolean[] IS_ALPHA = new boolean[ARRAY_SIZE]; private static final boolean[] IS_NUMERIC = new boolean[ARRAY_SIZE]; +private static final boolean[] IS_SCHEME = new boolean[ARRAY_SIZE]; private static final boolean[] IS_UNRESERVED = new boolean[ARRAY_SIZE]; private static final boolean[] IS_SUBDELIM = new boolean[ARRAY_SIZE]; private static final boolean[] IS_USERINFO = new boolean[ARRAY_SIZE]; @@ -94,6 +95,10 @@ public class HttpParser { IS_ALPHA[i] = true; } +if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '+' || i == '-' || i == '.') { +IS_SCHEME[i] = true; +} + if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '-' || i == '.' || i == '_' || i == '~') { IS_UNRESERVED[i] = true; } @@ -319,6 +324,52 @@ public class HttpParser { } +public static boolean isScheme(int c) { +// Fast for valid scheme characters, slower for some incorrect +// ones +try { +return IS_SCHEME[c]; +} catch (ArrayIndexOutOfBoundsException ex) { +return false; +} +} + + +/** + * Is the provided String a scheme as per RFC 3986? + * + * Note: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + * + * Since a scheme requires at least 1 ALPHA, {@code null} and the empty + * string ({@code ""}) are not considered to be valid tokens. + * + * @param s The string to test + * + * @return {@code true} if the string is a valid scheme, otherwise + * {@code false} + */ +public static boolean isScheme(String s) { +if (s == null) { +return false; +} +if (s.isEmpty()) { +return false; +} +char[] chars = s.toCharArray(); +if (!isAlpha(chars[0])) { +return false; +} +if (chars.length > 1) { +for (int i = 1; i < chars.length; i++) { +if (!isScheme(chars[i])) { +return false; +} +} +} +
[tomcat] branch 8.5.x updated: Validate the scheme pseudo-header in HTTP/2
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/8.5.x by this push: new 2b51e32a60 Validate the scheme pseudo-header in HTTP/2 2b51e32a60 is described below commit 2b51e32a6026ac1e89643c5f131a051994c59243 Author: Mark Thomas AuthorDate: Thu Feb 23 15:22:10 2023 + Validate the scheme pseudo-header in HTTP/2 --- java/org/apache/coyote/http2/Stream.java | 7 ++ java/org/apache/coyote/http2/StreamProcessor.java | 6 ++ .../apache/tomcat/util/http/parser/HttpParser.java | 51 ++ .../apache/coyote/http2/TestHttp2Section_8_1.java | 80 +- webapps/docs/changelog.xml | 8 +++ 5 files changed, 151 insertions(+), 1 deletion(-) diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index a00f3d8329..5623a94838 100644 --- a/java/org/apache/coyote/http2/Stream.java +++ b/java/org/apache/coyote/http2/Stream.java @@ -146,6 +146,13 @@ class Stream extends AbstractNonZeroStream implements HeaderEmitter { private void prepareRequest() { +if (coyoteRequest.scheme().isNull()) { +if (handler.getProtocol().getHttp11Protocol().isSSLEnabled()) { +coyoteRequest.scheme().setString("https"); +} else { +coyoteRequest.scheme().setString("http"); +} +} MessageBytes hostValueMB = coyoteRequest.getMimeHeaders().getUniqueValue("host"); if (hostValueMB == null) { throw new IllegalArgumentException(); diff --git a/java/org/apache/coyote/http2/StreamProcessor.java b/java/org/apache/coyote/http2/StreamProcessor.java index d51ad971e1..75bf5490d4 100644 --- a/java/org/apache/coyote/http2/StreamProcessor.java +++ b/java/org/apache/coyote/http2/StreamProcessor.java @@ -439,6 +439,12 @@ class StreamProcessor extends AbstractProcessor { return false; } +// Scheme must adhere to RFC 3986 +String scheme = request.scheme().toString(); +if (!HttpParser.isScheme(scheme)) { +return false; +} + // Invalid character in request target // (other checks such as valid %nn happen later) ByteChunk bc = request.requestURI().getByteChunk(); diff --git a/java/org/apache/tomcat/util/http/parser/HttpParser.java b/java/org/apache/tomcat/util/http/parser/HttpParser.java index 409b613f11..70d65e1ad3 100644 --- a/java/org/apache/tomcat/util/http/parser/HttpParser.java +++ b/java/org/apache/tomcat/util/http/parser/HttpParser.java @@ -51,6 +51,7 @@ public class HttpParser { private static final boolean[] IS_HTTP_PROTOCOL = new boolean[ARRAY_SIZE]; private static final boolean[] IS_ALPHA = new boolean[ARRAY_SIZE]; private static final boolean[] IS_NUMERIC = new boolean[ARRAY_SIZE]; +private static final boolean[] IS_SCHEME = new boolean[ARRAY_SIZE]; private static final boolean[] REQUEST_TARGET_ALLOW = new boolean[ARRAY_SIZE]; private static final boolean[] IS_UNRESERVED = new boolean[ARRAY_SIZE]; private static final boolean[] IS_SUBDELIM = new boolean[ARRAY_SIZE]; @@ -99,6 +100,10 @@ public class HttpParser { IS_ALPHA[i] = true; } +if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '+' || i == '-' || i == '.') { +IS_SCHEME[i] = true; +} + if (IS_ALPHA[i] || IS_NUMERIC[i] || i == '-' || i == '.' || i == '_' || i == '~') { IS_UNRESERVED[i] = true; } @@ -339,6 +344,52 @@ public class HttpParser { } +public static boolean isScheme(int c) { +// Fast for valid scheme characters, slower for some incorrect +// ones +try { +return IS_SCHEME[c]; +} catch (ArrayIndexOutOfBoundsException ex) { +return false; +} +} + + +/** + * Is the provided String a scheme as per RFC 3986? + * + * Note: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + * + * Since a scheme requires at least 1 ALPHA, {@code null} and the empty + * string ({@code ""}) are not considered to be valid tokens. + * + * @param s The string to test + * + * @return {@code true} if the string is a valid scheme, otherwise + * {@code false} + */ +public static boolean isScheme(String s) { +if (s == null) { +return false; +} +if (s.isEmpty()) { +return false; +} +char[] chars = s.toCharArray(); +if (!isAlpha(chars[0])) { +return false; +} +if (chars.length > 1) { +for (int i = 1; i < chars.length; i++) { +if (!isScheme(chars[i])) { +return false; +} +} +
Re: [VOTE] Release Apache Tomcat 9.0.72
сб, 18 февр. 2023 г. в 12:46, Rémy Maucherat : > > The proposed Apache Tomcat 9.0.72 release is now available for voting. > > The notable changes compared to 9.0.71 are: > > - Add an error report valve that allows redirecting to or proxying from an >external web server. > > - Log basic information for each configured TLS certificate when >Tomcat starts. > > Along with lots of other bug fixes and improvements. > > For full details, see the changelog: > https://nightlies.apache.org/tomcat/tomcat-9.0.x/docs/changelog.html > > It can be obtained from: > https://dist.apache.org/repos/dist/dev/tomcat/tomcat-9/v9.0.72/ > The Maven staging repo is: > https://repository.apache.org/content/repositories/orgapachetomcat-1418 > The tag is: > https://github.com/apache/tomcat/tree/9.0.72 > 7754d319b2a8866b5bcdf1ea0f35e68470320295 > > The proposed 9.0.72 release is: > [ ] Broken - do not release > [x] Stable - go ahead and release as 9.0.72 Smoke tests OK with Java 8u362, Tomcat Native enabled, Unit tests OK with Java 11.0.18, all connectors, on Windows 10. Best regards, Konstantin Kolinko - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn propchange: r60269 - svn:log
Author: kkolinko Revision: 60269 Modified property: svn:log Modified: svn:log at Thu Feb 23 16:00:45 2023 -- --- svn:log (original) +++ svn:log Thu Feb 23 16:00:45 2023 @@ -1 +1 @@ -Release Apache Tomcat 11.0.0-Me (alpha) +Release Apache Tomcat 11.0.0-M3 (alpha) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 01/06: Handle CONNECT with deliberate 501 rather than accidental 400
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit e5815e2312088c092bfa4a866332a650aee8f142 Author: Mark Thomas AuthorDate: Thu Feb 23 16:37:30 2023 + Handle CONNECT with deliberate 501 rather than accidental 400 --- .../apache/catalina/connector/CoyoteAdapter.java | 92 -- .../catalina/connector/LocalStrings.properties | 1 + java/org/apache/coyote/http2/Stream.java | 3 +- .../apache/coyote/http11/TestHttp11Processor.java | 18 + .../apache/coyote/http2/TestStreamProcessor.java | 23 ++ webapps/docs/changelog.xml | 4 + 6 files changed, 97 insertions(+), 44 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 9efcce07e6..0e0526a878 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -635,53 +635,59 @@ public class CoyoteAdapter implements Adapter { MessageBytes decodedURI = req.decodedURI(); -if (undecodedURI.getType() == MessageBytes.T_BYTES) { -if (connector.getRejectSuspiciousURIs()) { -if (checkSuspiciousURIs(undecodedURI.getByteChunk())) { -response.sendError(400, "Invalid URI"); +// Filter CONNECT method +if (req.method().equalsIgnoreCase("CONNECT")) { +response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, sm.getString("coyoteAdapter.connect")); +} else { +// No URI for CONNECT requests +if (undecodedURI.getType() == MessageBytes.T_BYTES) { +if (connector.getRejectSuspiciousURIs()) { +if (checkSuspiciousURIs(undecodedURI.getByteChunk())) { +response.sendError(400, "Invalid URI"); +} } -} -// Copy the raw URI to the decodedURI -decodedURI.duplicate(undecodedURI); +// Copy the raw URI to the decodedURI +decodedURI.duplicate(undecodedURI); -// Parse (and strip out) the path parameters -parsePathParameters(req, request); +// Parse (and strip out) the path parameters +parsePathParameters(req, request); -// URI decoding -// %xx decoding of the URL -try { -req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); -} catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); -} -// Normalization -if (normalize(req.decodedURI(), connector.getAllowBackslash())) { -// Character decoding -convertURI(decodedURI, request); -// URIEncoding values are limited to US-ASCII supersets. -// Therefore it is not necessary to check that the URI remains -// normalized after character decoding +// URI decoding +// %xx decoding of the URL +try { +req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); +} catch (IOException ioe) { +response.sendError(400, "Invalid URI: " + ioe.getMessage()); +} +// Normalization +if (normalize(req.decodedURI(), connector.getAllowBackslash())) { +// Character decoding +convertURI(decodedURI, request); +// URIEncoding values are limited to US-ASCII supersets. +// Therefore it is not necessary to check that the URI remains +// normalized after character decoding +} else { +response.sendError(400, "Invalid URI"); +} } else { -response.sendError(400, "Invalid URI"); -} -} else { -/* The URI is chars or String, and has been sent using an in-memory - * protocol handler. The following assumptions are made: - * - req.requestURI() has been set to the 'original' non-decoded, - * non-normalized URI - * - req.decodedURI() has been set to the decoded, normalized form - * of req.requestURI() - * - 'suspicious' URI filtering - if required - has already been - * performed - */ -decodedURI.toChars(); -// Remove all path parameters; any needed path parameter should be set -// using the request object rather than passing it in the URL -CharChunk uriCC = decodedURI.
[tomcat] branch main updated (3e19b6947c -> 4cadeffb78)
This is an automated email from the ASF dual-hosted git repository. markt pushed a change to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git from 3e19b6947c Validate the scheme pseudo-header in HTTP/2 new e5815e2312 Handle CONNECT with deliberate 501 rather than accidental 400 new cfc1812ac9 Use i18n new e20760b5a1 Clean-up - formatting. No functional change. new 3dc4497f8a Clean-up - formatting. No functional change. new 0da9b12474 Clean-up - formatting. No functional change. new 4cadeffb78 Clean-up - formatting. No functional change. The 6 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../catalina/connector/ClientAbortException.java | 10 +- java/org/apache/catalina/connector/Connector.java | 229 +++ .../apache/catalina/connector/CoyoteAdapter.java | 319 - .../catalina/connector/CoyoteInputStream.java | 4 +- .../catalina/connector/CoyoteOutputStream.java | 16 +- .../apache/catalina/connector/CoyotePrincipal.java | 7 +- .../apache/catalina/connector/CoyoteReader.java| 37 +- .../apache/catalina/connector/CoyoteWriter.java| 5 +- .../org/apache/catalina/connector/InputBuffer.java | 31 +- .../catalina/connector/LocalStrings.properties | 4 + .../apache/catalina/connector/OutputBuffer.java| 43 +- java/org/apache/catalina/connector/Request.java| 751 + .../apache/catalina/connector/RequestFacade.java | 12 +- java/org/apache/catalina/connector/Response.java | 282 .../apache/catalina/connector/ResponseFacade.java | 5 +- .../coyote/http11/AbstractHttp11Protocol.java | 269 +--- .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11InputBuffer.java| 165 ++--- .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 95 ++- java/org/apache/coyote/http11/Http11Processor.java | 164 ++--- .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- java/org/apache/coyote/http2/Stream.java | 3 +- .../coyote/http11/TestHttp11InputBuffer.java | 122 +--- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 514 ++ test/org/apache/coyote/http2/Http2TestBase.java| 214 +++--- test/org/apache/coyote/http2/TestAsync.java| 19 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 27 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 +- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 +- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 +- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 +- .../apache/coyote/http2/TestHttp2Section_8_1.java | 72 +- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +- test/org/apache/coyote/http2/TestLargeUpload.java | 19 +- test/org/apache/coyote/http2/TestStream.java | 32 +- .../apache/coyote/http2/TestStreamProcessor.java | 47 +- .../apache/coyote/http2/TestStreamQueryString.java | 45 +- .../org/apache/coyote/http2/TesterHttp2Parser.java | 6 +- webapps/docs/changelog.xml | 4 + 65 files changed, 1869 insertions(+), 2583 deletions(-) -
[tomcat] 05/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 0da9b12474179b8c33329869a9f1ce71b2715720 Author: Mark Thomas AuthorDate: Thu Feb 23 16:47:52 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/TestHttp11InputBuffer.java | 122 ++--- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +-- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 506 - 4 files changed, 237 insertions(+), 459 deletions(-) diff --git a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java index 9e8c5b43b0..40276619de 100644 --- a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java +++ b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java @@ -39,7 +39,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private static final String CR = "\r"; private static final String LF = "\n"; -private static final String CRLF = CR + LF; +private static final String CRLF = CR + LF; /** * Test case for https://bz.apache.org/bugzilla/show_bug.cgi?id=48839 @@ -76,13 +76,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { connect(); String[] request = new String[1]; -request[0] = -"GET http://localhost:8080/test HTTP/1.1" + CRLF + -"Host: localhost:8080" + CRLF + -"X-Bug48839: abcd" + CRLF + -"\tefgh" + CRLF + -"Connection: close" + CRLF + -CRLF; +request[0] = "GET http://localhost:8080/test HTTP/1.1" + CRLF + "Host: localhost:8080" + CRLF + +"X-Bug48839: abcd" + CRLF + "\tefgh" + CRLF + "Connection: close" + CRLF + CRLF; setRequest(request); processRequest(); // blocks until response has been read @@ -116,8 +111,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { * Only interested in the request headers from a GET request */ @Override -protected void doGet(HttpServletRequest req, HttpServletResponse resp) -throws ServletException, IOException { +protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // Just echo the header value back as plain text resp.setContentType("text/plain"); @@ -167,9 +161,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557SeparatorsInName() throws Exception { -char httpSeparators[] = new char[] { -'\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', -'=', '>', '?', '@', '[', '\\', ']', '{', '}' }; +char httpSeparators[] = new char[] { '\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', '=', '>', '?', '@', +'[', '\\', ']', '{', '}' }; for (char s : httpSeparators) { doTestBug51557CharInName(s); @@ -222,8 +215,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557Continuation() { -Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", -"foo" + SimpleHttpClient.CRLF + " bar"); +Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", "foo" + SimpleHttpClient.CRLF + " bar"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -235,8 +227,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryStart() { -Bug51557Client client = new Bug51557Client("=X-Bug51557", -"invalid"); +Bug51557Client client = new Bug51557Client("=X-Bug51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -248,8 +239,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryEnd() { -Bug51557Client client = new Bug51557Client("X-Bug51557=", -"invalid"); +Bug51557Client client = new Bug51557Client("X-Bug51557=", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -259,8 +249,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private void doTestBug51557CharInName(char s) { -Bug51557Client client = -new Bug51557Client("X-Bug" + s + "51557", "invalid"); +Bug51557Client client = new Bug51557Client("X-Bug" + s + "51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -270,8 +259,7 @@ public class TestHttp11InputBuffer extends TomcatBas
[tomcat] 02/06: Use i18n
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit cfc1812ac9a54f7c5b18ddedfa875df2b283dbe0 Author: Mark Thomas AuthorDate: Thu Feb 23 16:41:59 2023 + Use i18n --- java/org/apache/catalina/connector/CoyoteAdapter.java | 10 +- java/org/apache/catalina/connector/LocalStrings.properties | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 0e0526a878..d13cefc327 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -629,7 +629,7 @@ public class CoyoteAdapter implements Adapter { connector.getService().getContainer().logAccess(request, response, 0, true); return false; } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } @@ -643,7 +643,7 @@ public class CoyoteAdapter implements Adapter { if (undecodedURI.getType() == MessageBytes.T_BYTES) { if (connector.getRejectSuspiciousURIs()) { if (checkSuspiciousURIs(undecodedURI.getByteChunk())) { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } @@ -658,7 +658,7 @@ public class CoyoteAdapter implements Adapter { try { req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); } catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); +response.sendError(400, sm.getString("coyoteAdapter.invalidURIWithMessage", ioe.getMessage())); } // Normalization if (normalize(req.decodedURI(), connector.getAllowBackslash())) { @@ -668,7 +668,7 @@ public class CoyoteAdapter implements Adapter { // Therefore it is not necessary to check that the URI remains // normalized after character decoding } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } else { /* The URI is chars or String, and has been sent using an in-memory @@ -866,7 +866,7 @@ public class CoyoteAdapter implements Adapter { if (header != null) { res.addHeader("Allow", header); } -response.sendError(405, "TRACE method is not allowed"); +response.sendError(405, sm.getString("coyoteAdapter.trace")); // Safe to skip the remainder of this method. return true; } diff --git a/java/org/apache/catalina/connector/LocalStrings.properties b/java/org/apache/catalina/connector/LocalStrings.properties index 4f77e0eb9b..7d81708f8e 100644 --- a/java/org/apache/catalina/connector/LocalStrings.properties +++ b/java/org/apache/catalina/connector/LocalStrings.properties @@ -21,7 +21,10 @@ coyoteAdapter.checkRecycled.request=Encountered a non-recycled request and recyc coyoteAdapter.checkRecycled.response=Encountered a non-recycled response and recycled it forcedly. coyoteAdapter.connect=HTTP requests using the CONNECT method are not supported coyoteAdapter.debug=The variable [{0}] has value [{1}] +coyoteAdapter.invalidURI=Invalid URI +coyoteAdapter.invalidURIWithMessage=Invalid URI: [{0}] coyoteAdapter.nullRequest=An asynchronous dispatch may only happen on an existing request +coyoteAdapter.trace=TRACE method is not allowed coyoteConnector.invalidEncoding=The encoding [{0}] is not recognised by the JRE. The Connector will continue to use [{1}] coyoteConnector.invalidPort=The connector cannot start since the specified port value of [{0}] is invalid - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 06/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 4cadeffb7821cf1fa7c13c2a87652d668e3ba7e1 Author: Mark Thomas AuthorDate: Thu Feb 23 16:48:17 2023 + Clean-up - formatting. No functional change. --- test/org/apache/coyote/http2/Http2TestBase.java| 214 +++ test/org/apache/coyote/http2/TestAsync.java| 19 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 27 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 ++- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 ++--- .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +-- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 ++-- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 ++-- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 ++--- .../apache/coyote/http2/TestHttp2Section_8_1.java | 72 ++--- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +--- test/org/apache/coyote/http2/TestLargeUpload.java | 19 +- test/org/apache/coyote/http2/TestStream.java | 32 +-- .../apache/coyote/http2/TestStreamProcessor.java | 26 +- .../apache/coyote/http2/TestStreamQueryString.java | 45 +--- .../org/apache/coyote/http2/TesterHttp2Parser.java | 6 +- 34 files changed, 477 insertions(+), 747 deletions(-) diff --git a/test/org/apache/coyote/http2/Http2TestBase.java b/test/org/apache/coyote/http2/Http2TestBase.java index 60035c3434..df70095346 100644 --- a/test/org/apache/coyote/http2/Http2TestBase.java +++ b/test/org/apache/coyote/http2/Http2TestBase.java @@ -66,8 +66,7 @@ import org.apache.tomcat.util.http.parser.Priority; import org.apache.tomcat.util.net.TesterSupport; /** - * Tests for compliance with the https://tools.ietf.org/html/rfc7540";> - * HTTP/2 specification. + * Tests for compliance with the https://tools.ietf.org/html/rfc7540";> HTTP/2 specification. */ @RunWith(Parameterized.class) public abstract class Http2TestBase extends TomcatBaseTest { @@ -101,8 +100,7 @@ public abstract class Http2TestBase extends TomcatBaseTest { private static final String HEADER_IGNORED = "x-ignore"; static final String DEFAULT_CONNECTION_HEADER_VALUE = "Upgrade, HTTP2-Settings"; -private static final byte[] EMPTY_SETTINGS_FRAME = -{ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }; +private static final byte[] EMPTY_SETTINGS_FRAME = { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }; static final String EMPTY_HTTP2_SETTINGS_HEADER; static { @@ -132,8 +130,8 @@ public abstract class Http2TestBase extends TomcatBaseTest { } /** - * Standard setup. Creates HTTP/2 connection via HTTP upgrade and ensures - * that the first response is correctly received. + * Standard setup. Creates HTTP/2 connection via HTTP upgrade and ensures that the first response is correctly + * received. */ protected void http2Connect() throws Exception { http2Connect(false); @@ -168,12 +166,8 @@ public abstract class Http2TestBase extends TomcatBaseTest { parser.readFrame(); parser.readFrame(); -Assert.assertEquals("0-Settings-[3]-[" + maxConcurrentStreams + "]\n" + -"0-Settings-End\n" + -"0-Settings-Ack\n" + -"0-Ping-[0,0,0,0,0,0,0,1]\n" + -getSimpleResponseTrace(1) -, output.getTrace()); +Assert.assertEquals("0-Settings-[3]-[" + maxConcurrentStreams + "]\n" + "0-Settings-End\n" + +"0-Settings-Ack\n" + "0-Ping-[0,0,0,0,0,0,0,1]\n" + getSimpleResponseTrace(1), output.getTrace()); output.clearTrace(); } @@ -210,14 +204,12 @@ public abstract class Http2TestBase extends TomcatBaseTest { } -protected void buildE
[tomcat] 04/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 3dc4497f8a5d8498d8fb42b1326e214b89e28270 Author: Mark Thomas AuthorDate: Thu Feb 23 16:47:25 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/AbstractHttp11Protocol.java | 269 + .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11InputBuffer.java| 165 ++--- .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 95 java/org/apache/coyote/http11/Http11Processor.java | 164 ++--- .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- 10 files changed, 376 insertions(+), 365 deletions(-) diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java index 422943ddab..9ffaeb0c93 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java @@ -55,13 +55,12 @@ import org.apache.tomcat.util.res.StringManager; public abstract class AbstractHttp11Protocol extends AbstractProtocol { -protected static final StringManager sm = -StringManager.getManager(AbstractHttp11Protocol.class); +protected static final StringManager sm = StringManager.getManager(AbstractHttp11Protocol.class); private final CompressionConfig compressionConfig = new CompressionConfig(); -public AbstractHttp11Protocol(AbstractEndpoint endpoint) { +public AbstractHttp11Protocol(AbstractEndpoint endpoint) { super(endpoint); setConnectionTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT); } @@ -117,7 +116,7 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { * Over-ridden here to make the method visible to nested classes. */ @Override -protected AbstractEndpoint getEndpoint() { +protected AbstractEndpoint getEndpoint() { return super.getEndpoint(); } @@ -126,61 +125,70 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { // -- managed in the ProtocolHandler private ContinueResponseTiming continueResponseTiming = ContinueResponseTiming.IMMEDIATELY; + public String getContinueResponseTiming() { return continueResponseTiming.toString(); } + public void setContinueResponseTiming(String continueResponseTiming) { this.continueResponseTiming = ContinueResponseTiming.fromString(continueResponseTiming); } + public ContinueResponseTiming getContinueResponseTimingInternal() { return continueResponseTiming; } private boolean useKeepAliveResponseHeader = true; + public boolean getUseKeepAliveResponseHeader() { return useKeepAliveResponseHeader; } + public void setUseKeepAliveResponseHeader(boolean useKeepAliveResponseHeader) { this.useKeepAliveResponseHeader = useKeepAliveResponseHeader; } private String relaxedPathChars = null; + public String getRelaxedPathChars() { return relaxedPathChars; } + public void setRelaxedPathChars(String relaxedPathChars) { this.relaxedPathChars = relaxedPathChars; } private String relaxedQueryChars = null; + public String getRelaxedQueryChars() { return relaxedQueryChars; } + public void setRelaxedQueryChars(String relaxedQueryChars) { this.relaxedQueryChars = relaxedQueryChars; } private boolean allowHostHeaderMismatch = false; + /** - * Will Tomcat accept an HTTP 1.1 request where the host header does not - * agree with the host specified (if any) in the request line? + * Will Tomcat accept an HTTP 1.1 request where the host header does not agree with the host specified (if any) in + * the request line? * - * @return {@code true} if Tomcat will allow such requests, otherwise - * {@code false} + * @return {@code true} if Tomcat will allow such requests, otherwise {@code false} */ public boolean getAllowHostHeaderMismatch() { return allowHostHeaderMismatch; } + /** - * Will Tomcat accept an HTTP 1.1 request where the host header does not - * agree with the host specified (if any) in the request line? + * Will Tomcat accept an HTTP 1.1 request where the host header does not agree with the host specified (if any) in + * the request line? * - * @param allowHostHeaderMismatch {@code true} to allow such requests, - *
[tomcat] 04/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit dbb979a15f89038cce380ed721bca8140d1c8078 Author: Mark Thomas AuthorDate: Thu Feb 23 16:49:36 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/AbstractHttp11JsseProtocol.java | 27 ++- .../coyote/http11/AbstractHttp11Protocol.java | 251 + .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11InputBuffer.java| 165 ++ .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 95 java/org/apache/coyote/http11/Http11Processor.java | 164 ++ .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- 11 files changed, 380 insertions(+), 370 deletions(-) diff --git a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java index d8241a6bac..6f6fff40e8 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java @@ -19,18 +19,17 @@ package org.apache.coyote.http11; import org.apache.tomcat.util.net.AbstractJsseEndpoint; import org.apache.tomcat.util.net.openssl.OpenSSLImplementation; -public abstract class AbstractHttp11JsseProtocol -extends AbstractHttp11Protocol { +public abstract class AbstractHttp11JsseProtocol extends AbstractHttp11Protocol { -public AbstractHttp11JsseProtocol(AbstractJsseEndpoint endpoint) { +public AbstractHttp11JsseProtocol(AbstractJsseEndpoint endpoint) { super(endpoint); } @Override -protected AbstractJsseEndpoint getEndpoint() { +protected AbstractJsseEndpoint getEndpoint() { // Over-ridden to add cast -return (AbstractJsseEndpoint) super.getEndpoint(); +return (AbstractJsseEndpoint) super.getEndpoint(); } @@ -38,18 +37,26 @@ public abstract class AbstractHttp11JsseProtocol if (OpenSSLImplementation.class.getName().equals(getSslImplementationName())) { return "openssl"; } -if (getSslImplementationName() != null -&& getSslImplementationName().endsWith(".panama.OpenSSLImplementation")) { +if (getSslImplementationName() != null && + getSslImplementationName().endsWith(".panama.OpenSSLImplementation")) { return "opensslforeign"; } return "jsse"; } -public String getSslImplementationName() { return getEndpoint().getSslImplementationName(); } -public void setSslImplementationName(String s) { getEndpoint().setSslImplementationName(s); } +public String getSslImplementationName() { +return getEndpoint().getSslImplementationName(); +} + +public void setSslImplementationName(String s) { +getEndpoint().setSslImplementationName(s); +} -public int getSniParseLimit() { return getEndpoint().getSniParseLimit(); } +public int getSniParseLimit() { +return getEndpoint().getSniParseLimit(); +} + public void setSniParseLimit(int sniParseLimit) { getEndpoint().setSniParseLimit(sniParseLimit); } diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java index ab74a5434d..a8fab9554d 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java @@ -54,13 +54,12 @@ import org.apache.tomcat.util.res.StringManager; public abstract class AbstractHttp11Protocol extends AbstractProtocol { -protected static final StringManager sm = -StringManager.getManager(AbstractHttp11Protocol.class); +protected static final StringManager sm = StringManager.getManager(AbstractHttp11Protocol.class); private final CompressionConfig compressionConfig = new CompressionConfig(); -public AbstractHttp11Protocol(AbstractEndpoint endpoint) { +public AbstractHttp11Protocol(AbstractEndpoint endpoint) { super(endpoint); setConnectionTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT); } @@ -116,7 +115,7 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { * Over-ridden here to make the method visible to nested classes. */ @Override -protected AbstractEndpoint getEndpoint() { +protected AbstractEndpoint getEndpoint() { return super.getEndpoint(); } @@ -125,61 +124,70 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { // -- ma
[tomcat] 01/06: Handle CONNECT with deliberate 501 rather than accidental 400
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit e4dff72164760179b6340bbc3c74c45c72a5bf9d Author: Mark Thomas AuthorDate: Thu Feb 23 16:37:30 2023 + Handle CONNECT with deliberate 501 rather than accidental 400 --- .../apache/catalina/connector/CoyoteAdapter.java | 92 -- .../catalina/connector/LocalStrings.properties | 1 + java/org/apache/coyote/http2/Stream.java | 3 +- .../apache/coyote/http11/TestHttp11Processor.java | 18 + .../apache/coyote/http2/TestStreamProcessor.java | 23 ++ webapps/docs/changelog.xml | 4 + 6 files changed, 97 insertions(+), 44 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 79cff350f0..04afae184f 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -635,53 +635,59 @@ public class CoyoteAdapter implements Adapter { MessageBytes decodedURI = req.decodedURI(); -if (undecodedURI.getType() == MessageBytes.T_BYTES) { -if (connector.getRejectSuspiciousURIs()) { -if (checkSuspiciousURIs(undecodedURI.getByteChunk())) { -response.sendError(400, "Invalid URI"); +// Filter CONNECT method +if (req.method().equalsIgnoreCase("CONNECT")) { +response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, sm.getString("coyoteAdapter.connect")); +} else { +// No URI for CONNECT requests +if (undecodedURI.getType() == MessageBytes.T_BYTES) { +if (connector.getRejectSuspiciousURIs()) { +if (checkSuspiciousURIs(undecodedURI.getByteChunk())) { +response.sendError(400, "Invalid URI"); +} } -} -// Copy the raw URI to the decodedURI -decodedURI.duplicate(undecodedURI); +// Copy the raw URI to the decodedURI +decodedURI.duplicate(undecodedURI); -// Parse (and strip out) the path parameters -parsePathParameters(req, request); +// Parse (and strip out) the path parameters +parsePathParameters(req, request); -// URI decoding -// %xx decoding of the URL -try { -req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); -} catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); -} -// Normalization -if (normalize(req.decodedURI(), connector.getAllowBackslash())) { -// Character decoding -convertURI(decodedURI, request); -// URIEncoding values are limited to US-ASCII supersets. -// Therefore it is not necessary to check that the URI remains -// normalized after character decoding +// URI decoding +// %xx decoding of the URL +try { +req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); +} catch (IOException ioe) { +response.sendError(400, "Invalid URI: " + ioe.getMessage()); +} +// Normalization +if (normalize(req.decodedURI(), connector.getAllowBackslash())) { +// Character decoding +convertURI(decodedURI, request); +// URIEncoding values are limited to US-ASCII supersets. +// Therefore it is not necessary to check that the URI remains +// normalized after character decoding +} else { +response.sendError(400, "Invalid URI"); +} } else { -response.sendError(400, "Invalid URI"); -} -} else { -/* The URI is chars or String, and has been sent using an in-memory - * protocol handler. The following assumptions are made: - * - req.requestURI() has been set to the 'original' non-decoded, - * non-normalized URI - * - req.decodedURI() has been set to the decoded, normalized form - * of req.requestURI() - * - 'suspicious' URI filtering - if required - has already been - * performed - */ -decodedURI.toChars(); -// Remove all path parameters; any needed path parameter should be set -// using the request object rather than passing it in the URL -CharChunk uriCC = decodedUR
[tomcat] 02/06: Use i18n
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit a34d9daeb6d32590c24319dfc918edde673274ee Author: Mark Thomas AuthorDate: Thu Feb 23 16:41:59 2023 + Use i18n --- java/org/apache/catalina/connector/CoyoteAdapter.java | 10 +- java/org/apache/catalina/connector/LocalStrings.properties | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 04afae184f..efe8dd61e7 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -629,7 +629,7 @@ public class CoyoteAdapter implements Adapter { connector.getService().getContainer().logAccess(request, response, 0, true); return false; } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } @@ -643,7 +643,7 @@ public class CoyoteAdapter implements Adapter { if (undecodedURI.getType() == MessageBytes.T_BYTES) { if (connector.getRejectSuspiciousURIs()) { if (checkSuspiciousURIs(undecodedURI.getByteChunk())) { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } @@ -658,7 +658,7 @@ public class CoyoteAdapter implements Adapter { try { req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); } catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); +response.sendError(400, sm.getString("coyoteAdapter.invalidURIWithMessage", ioe.getMessage())); } // Normalization if (normalize(req.decodedURI(), connector.getAllowBackslash())) { @@ -668,7 +668,7 @@ public class CoyoteAdapter implements Adapter { // Therefore it is not necessary to check that the URI remains // normalized after character decoding } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } else { /* The URI is chars or String, and has been sent using an in-memory @@ -866,7 +866,7 @@ public class CoyoteAdapter implements Adapter { if (header != null) { res.addHeader("Allow", header); } -response.sendError(405, "TRACE method is not allowed"); +response.sendError(405, sm.getString("coyoteAdapter.trace")); // Safe to skip the remainder of this method. return true; } diff --git a/java/org/apache/catalina/connector/LocalStrings.properties b/java/org/apache/catalina/connector/LocalStrings.properties index aaf3dd675a..2b0e8c6998 100644 --- a/java/org/apache/catalina/connector/LocalStrings.properties +++ b/java/org/apache/catalina/connector/LocalStrings.properties @@ -21,7 +21,10 @@ coyoteAdapter.checkRecycled.request=Encountered a non-recycled request and recyc coyoteAdapter.checkRecycled.response=Encountered a non-recycled response and recycled it forcedly. coyoteAdapter.connect=HTTP requests using the CONNECT method are not supported coyoteAdapter.debug=The variable [{0}] has value [{1}] +coyoteAdapter.invalidURI=Invalid URI +coyoteAdapter.invalidURIWithMessage=Invalid URI: [{0}] coyoteAdapter.nullRequest=An asynchronous dispatch may only happen on an existing request +coyoteAdapter.trace=TRACE method is not allowed coyoteConnector.invalidEncoding=The encoding [{0}] is not recognised by the JRE. The Connector will continue to use [{1}] coyoteConnector.invalidPort=The connector cannot start since the specified port value of [{0}] is invalid - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 10.1.x updated (e7388e78d0 -> 018e5bd7dc)
This is an automated email from the ASF dual-hosted git repository. markt pushed a change to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git from e7388e78d0 Validate the scheme pseudo-header in HTTP/2 new e4dff72164 Handle CONNECT with deliberate 501 rather than accidental 400 new a34d9daeb6 Use i18n new e3d9795e8a Clean-up - formatting. No functional change. new dbb979a15f Clean-up - formatting. No functional change. new 1b6c6c4701 Clean-up - formatting. No functional change. new 018e5bd7dc Clean-up - formatting. No functional change. The 6 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../catalina/connector/ClientAbortException.java | 10 +- java/org/apache/catalina/connector/Connector.java | 234 +++ .../apache/catalina/connector/CoyoteAdapter.java | 319 - .../catalina/connector/CoyoteInputStream.java | 19 +- .../catalina/connector/CoyoteOutputStream.java | 16 +- .../apache/catalina/connector/CoyotePrincipal.java | 7 +- .../apache/catalina/connector/CoyoteReader.java| 37 +- .../apache/catalina/connector/CoyoteWriter.java| 5 +- .../org/apache/catalina/connector/InputBuffer.java | 34 +- .../catalina/connector/LocalStrings.properties | 4 + .../apache/catalina/connector/OutputBuffer.java| 46 +- java/org/apache/catalina/connector/Request.java| 755 + .../apache/catalina/connector/RequestFacade.java | 137 ++-- java/org/apache/catalina/connector/Response.java | 311 - .../apache/catalina/connector/ResponseFacade.java | 23 +- .../coyote/http11/AbstractHttp11JsseProtocol.java | 27 +- .../coyote/http11/AbstractHttp11Protocol.java | 251 --- .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11InputBuffer.java| 165 ++--- .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 95 ++- java/org/apache/coyote/http11/Http11Processor.java | 164 ++--- .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- java/org/apache/coyote/http2/Stream.java | 3 +- .../coyote/http11/TestHttp11InputBuffer.java | 122 +--- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 514 ++ test/org/apache/coyote/http2/Http2TestBase.java| 215 +++--- .../apache/coyote/http2/TestAbstractStream.java| 107 ++- test/org/apache/coyote/http2/TestAsync.java| 19 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 27 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 +- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 +- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 53 +- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 +- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 +- .../apache/coyote/http2/TestHttp2Section_8_1.java | 72 +- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +- test/org/apache/coyote/http2/TestLargeUpload.java | 19 +- test/org/apache/coyote/http2/TestStream.java | 32 +- .../apache/coyote/http2/TestStreamProcessor.java | 47 +- .../apache/coyote/http2/TestStreamQueryString.java | 45 +- .../org/apache/coyote/http2/TesterHt
[tomcat] 05/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 1b6c6c47010748dcec8f37e92546b172b3d17080 Author: Mark Thomas AuthorDate: Thu Feb 23 16:49:52 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/TestHttp11InputBuffer.java | 122 ++--- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +-- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 506 - 4 files changed, 237 insertions(+), 459 deletions(-) diff --git a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java index 9e8c5b43b0..40276619de 100644 --- a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java +++ b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java @@ -39,7 +39,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private static final String CR = "\r"; private static final String LF = "\n"; -private static final String CRLF = CR + LF; +private static final String CRLF = CR + LF; /** * Test case for https://bz.apache.org/bugzilla/show_bug.cgi?id=48839 @@ -76,13 +76,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { connect(); String[] request = new String[1]; -request[0] = -"GET http://localhost:8080/test HTTP/1.1" + CRLF + -"Host: localhost:8080" + CRLF + -"X-Bug48839: abcd" + CRLF + -"\tefgh" + CRLF + -"Connection: close" + CRLF + -CRLF; +request[0] = "GET http://localhost:8080/test HTTP/1.1" + CRLF + "Host: localhost:8080" + CRLF + +"X-Bug48839: abcd" + CRLF + "\tefgh" + CRLF + "Connection: close" + CRLF + CRLF; setRequest(request); processRequest(); // blocks until response has been read @@ -116,8 +111,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { * Only interested in the request headers from a GET request */ @Override -protected void doGet(HttpServletRequest req, HttpServletResponse resp) -throws ServletException, IOException { +protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // Just echo the header value back as plain text resp.setContentType("text/plain"); @@ -167,9 +161,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557SeparatorsInName() throws Exception { -char httpSeparators[] = new char[] { -'\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', -'=', '>', '?', '@', '[', '\\', ']', '{', '}' }; +char httpSeparators[] = new char[] { '\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', '=', '>', '?', '@', +'[', '\\', ']', '{', '}' }; for (char s : httpSeparators) { doTestBug51557CharInName(s); @@ -222,8 +215,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557Continuation() { -Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", -"foo" + SimpleHttpClient.CRLF + " bar"); +Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", "foo" + SimpleHttpClient.CRLF + " bar"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -235,8 +227,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryStart() { -Bug51557Client client = new Bug51557Client("=X-Bug51557", -"invalid"); +Bug51557Client client = new Bug51557Client("=X-Bug51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -248,8 +239,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryEnd() { -Bug51557Client client = new Bug51557Client("X-Bug51557=", -"invalid"); +Bug51557Client client = new Bug51557Client("X-Bug51557=", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -259,8 +249,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private void doTestBug51557CharInName(char s) { -Bug51557Client client = -new Bug51557Client("X-Bug" + s + "51557", "invalid"); +Bug51557Client client = new Bug51557Client("X-Bug" + s + "51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -270,8 +259,7 @@ public class TestHttp11InputBuffer extends TomcatB
Buildbot failure in on tomcat-9.0.x
Build status: BUILD FAILED: compile (failure) Worker used: bb_worker2_ubuntu URL: https://ci2.apache.org/#builders/37/builds/466 Blamelist: Mark Thomas Build Text: compile (failure) Status Detected: new failure Build Source Stamp: [branch 9.0.x] 9c38aac33ae02da550d459d011d3ffb030a46147 Steps: worker_preparation: 0 git: 0 shell: 0 shell_1: 0 shell_2: 0 shell_3: 0 shell_4: 0 shell_5: 0 compile: 2 -- ASF Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 02/06: Use i18n
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 559606f331063be1bc7575f85d39e1c1efec995c Author: Mark Thomas AuthorDate: Thu Feb 23 16:41:59 2023 + Use i18n --- java/org/apache/catalina/connector/CoyoteAdapter.java | 8 java/org/apache/catalina/connector/LocalStrings.properties | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index fc1f3b54de..4c9a08f576 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -632,7 +632,7 @@ public class CoyoteAdapter implements Adapter { connector.getService().getContainer().logAccess(request, response, 0, true); return false; } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } @@ -655,7 +655,7 @@ public class CoyoteAdapter implements Adapter { try { req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); } catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); +response.sendError(400, sm.getString("coyoteAdapter.invalidURIWithMessage", ioe.getMessage())); } // Normalization if (normalize(req.decodedURI())) { @@ -669,7 +669,7 @@ public class CoyoteAdapter implements Adapter { response.sendError(400, "Invalid URI"); } } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } else { /* The URI is chars or String, and has been sent using an in-memory @@ -865,7 +865,7 @@ public class CoyoteAdapter implements Adapter { if (header != null) { res.addHeader("Allow", header); } -response.sendError(405, "TRACE method is not allowed"); +response.sendError(405, sm.getString("coyoteAdapter.trace")); // Safe to skip the remainder of this method. return true; } diff --git a/java/org/apache/catalina/connector/LocalStrings.properties b/java/org/apache/catalina/connector/LocalStrings.properties index b6c5ca936b..eba56eb075 100644 --- a/java/org/apache/catalina/connector/LocalStrings.properties +++ b/java/org/apache/catalina/connector/LocalStrings.properties @@ -21,7 +21,10 @@ coyoteAdapter.checkRecycled.request=Encountered a non-recycled request and recyc coyoteAdapter.checkRecycled.response=Encountered a non-recycled response and recycled it forcedly. coyoteAdapter.connect=HTTP requests using the CONNECT method are not supported coyoteAdapter.debug=The variable [{0}] has value [{1}] +coyoteAdapter.invalidURI=Invalid URI +coyoteAdapter.invalidURIWithMessage=Invalid URI: [{0}] coyoteAdapter.nullRequest=An asynchronous dispatch may only happen on an existing request +coyoteAdapter.trace=TRACE method is not allowed coyoteConnector.invalidEncoding=The encoding [{0}] is not recognised by the JRE. The Connector will continue to use [{1}] coyoteConnector.invalidPort=The connector cannot start since the specified port value of [{0}] is invalid - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 9.0.x updated (9c38aac33a -> 83df6cd2e3)
This is an automated email from the ASF dual-hosted git repository. markt pushed a change to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git from 9c38aac33a Validate the scheme pseudo-header in HTTP/2 new be6a92b625 Handle CONNECT with deliberate 501 rather than accidental 400 new 559606f331 Use i18n new 1f6c3d9f7a Clean-up - formatting. No functional change. new 6f88c5a31d Clean-up - formatting. No functional change. new 4faebc4038 Clean-up - formatting. No functional change. new 83df6cd2e3 Clean-up - formatting. No functional change. The 6 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../catalina/connector/ClientAbortException.java | 10 +- java/org/apache/catalina/connector/Connector.java | 242 +++--- .../apache/catalina/connector/CoyoteAdapter.java | 322 .../catalina/connector/CoyoteInputStream.java | 19 +- .../catalina/connector/CoyoteOutputStream.java | 16 +- .../apache/catalina/connector/CoyotePrincipal.java | 7 +- .../apache/catalina/connector/CoyoteReader.java| 37 +- .../apache/catalina/connector/CoyoteWriter.java| 5 +- .../org/apache/catalina/connector/InputBuffer.java | 34 +- .../catalina/connector/LocalStrings.properties | 4 + .../apache/catalina/connector/OutputBuffer.java| 50 +- java/org/apache/catalina/connector/Request.java| 837 + .../apache/catalina/connector/RequestFacade.java | 143 ++-- java/org/apache/catalina/connector/Response.java | 345 - .../apache/catalina/connector/ResponseFacade.java | 23 +- .../coyote/http11/AbstractHttp11JsseProtocol.java | 27 +- .../coyote/http11/AbstractHttp11Protocol.java | 368 + .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11AprProtocol.java| 34 +- .../apache/coyote/http11/Http11InputBuffer.java| 165 ++-- .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 95 ++- java/org/apache/coyote/http11/Http11Processor.java | 164 ++-- .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- java/org/apache/coyote/http2/Stream.java | 6 +- .../coyote/http11/TestHttp11InputBuffer.java | 122 +-- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 509 + test/org/apache/coyote/http2/Http2TestBase.java| 215 +++--- .../apache/coyote/http2/TestAbstractStream.java| 72 +- test/org/apache/coyote/http2/TestAsync.java| 19 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 24 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 +- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 +- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 53 +- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 +- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 +- .../apache/coyote/http2/TestHttp2Section_8_1.java | 69 +- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +- test/org/apache/coyote/http2/TestLargeUpload.java | 14 +- test/org/apache/coyote/http2/TestStream.java | 32 +- .../apache/coyote/http2/TestStreamProcessor.java | 47 +- .../apache/coyote/http2/TestStreamQueryStr
[tomcat] 04/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 6f88c5a31d06c91ddba975ad6af3e451e11eac6a Author: Mark Thomas AuthorDate: Thu Feb 23 16:58:51 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/AbstractHttp11JsseProtocol.java | 27 +- .../coyote/http11/AbstractHttp11Protocol.java | 368 + .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11AprProtocol.java| 34 +- .../apache/coyote/http11/Http11InputBuffer.java| 165 - .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 95 +++--- java/org/apache/coyote/http11/Http11Processor.java | 164 - .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- 12 files changed, 486 insertions(+), 415 deletions(-) diff --git a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java index d8241a6bac..6f6fff40e8 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java @@ -19,18 +19,17 @@ package org.apache.coyote.http11; import org.apache.tomcat.util.net.AbstractJsseEndpoint; import org.apache.tomcat.util.net.openssl.OpenSSLImplementation; -public abstract class AbstractHttp11JsseProtocol -extends AbstractHttp11Protocol { +public abstract class AbstractHttp11JsseProtocol extends AbstractHttp11Protocol { -public AbstractHttp11JsseProtocol(AbstractJsseEndpoint endpoint) { +public AbstractHttp11JsseProtocol(AbstractJsseEndpoint endpoint) { super(endpoint); } @Override -protected AbstractJsseEndpoint getEndpoint() { +protected AbstractJsseEndpoint getEndpoint() { // Over-ridden to add cast -return (AbstractJsseEndpoint) super.getEndpoint(); +return (AbstractJsseEndpoint) super.getEndpoint(); } @@ -38,18 +37,26 @@ public abstract class AbstractHttp11JsseProtocol if (OpenSSLImplementation.class.getName().equals(getSslImplementationName())) { return "openssl"; } -if (getSslImplementationName() != null -&& getSslImplementationName().endsWith(".panama.OpenSSLImplementation")) { +if (getSslImplementationName() != null && + getSslImplementationName().endsWith(".panama.OpenSSLImplementation")) { return "opensslforeign"; } return "jsse"; } -public String getSslImplementationName() { return getEndpoint().getSslImplementationName(); } -public void setSslImplementationName(String s) { getEndpoint().setSslImplementationName(s); } +public String getSslImplementationName() { +return getEndpoint().getSslImplementationName(); +} + +public void setSslImplementationName(String s) { +getEndpoint().setSslImplementationName(s); +} -public int getSniParseLimit() { return getEndpoint().getSniParseLimit(); } +public int getSniParseLimit() { +return getEndpoint().getSniParseLimit(); +} + public void setSniParseLimit(int sniParseLimit) { getEndpoint().setSniParseLimit(sniParseLimit); } diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java index 5526e0d12e..908ef0f9e3 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java @@ -52,13 +52,12 @@ import org.apache.tomcat.util.res.StringManager; public abstract class AbstractHttp11Protocol extends AbstractProtocol { -protected static final StringManager sm = -StringManager.getManager(AbstractHttp11Protocol.class); +protected static final StringManager sm = StringManager.getManager(AbstractHttp11Protocol.class); private final CompressionConfig compressionConfig = new CompressionConfig(); -public AbstractHttp11Protocol(AbstractEndpoint endpoint) { +public AbstractHttp11Protocol(AbstractEndpoint endpoint) { super(endpoint); setConnectionTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT); } @@ -114,7 +113,7 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { * Over-ridden here to make the method visible to nested classes. */ @Override -protected AbstractEndpoint getEndpoint() { +protected AbstractEndpoint getEndpoint() { return super.getEndpoint(); } @@ -123,61 +122,70 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { /
[tomcat] 05/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 4faebc4038ac22b17fac88a53ac5d3346c81247f Author: Mark Thomas AuthorDate: Thu Feb 23 16:59:12 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/TestHttp11InputBuffer.java | 122 ++--- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +-- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 501 - 4 files changed, 235 insertions(+), 456 deletions(-) diff --git a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java index 94117a14a0..564e5001d5 100644 --- a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java +++ b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java @@ -39,7 +39,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private static final String CR = "\r"; private static final String LF = "\n"; -private static final String CRLF = CR + LF; +private static final String CRLF = CR + LF; /** * Test case for https://bz.apache.org/bugzilla/show_bug.cgi?id=48839 @@ -76,13 +76,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { connect(); String[] request = new String[1]; -request[0] = -"GET http://localhost:8080/test HTTP/1.1" + CRLF + -"Host: localhost:8080" + CRLF + -"X-Bug48839: abcd" + CRLF + -"\tefgh" + CRLF + -"Connection: close" + CRLF + -CRLF; +request[0] = "GET http://localhost:8080/test HTTP/1.1" + CRLF + "Host: localhost:8080" + CRLF + +"X-Bug48839: abcd" + CRLF + "\tefgh" + CRLF + "Connection: close" + CRLF + CRLF; setRequest(request); processRequest(); // blocks until response has been read @@ -116,8 +111,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { * Only interested in the request headers from a GET request */ @Override -protected void doGet(HttpServletRequest req, HttpServletResponse resp) -throws ServletException, IOException { +protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // Just echo the header value back as plain text resp.setContentType("text/plain"); @@ -167,9 +161,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557SeparatorsInName() throws Exception { -char httpSeparators[] = new char[] { -'\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', -'=', '>', '?', '@', '[', '\\', ']', '{', '}' }; +char httpSeparators[] = new char[] { '\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', '=', '>', '?', '@', +'[', '\\', ']', '{', '}' }; for (char s : httpSeparators) { doTestBug51557CharInName(s); @@ -222,8 +215,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557Continuation() { -Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", -"foo" + SimpleHttpClient.CRLF + " bar"); +Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", "foo" + SimpleHttpClient.CRLF + " bar"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -235,8 +227,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryStart() { -Bug51557Client client = new Bug51557Client("=X-Bug51557", -"invalid"); +Bug51557Client client = new Bug51557Client("=X-Bug51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -248,8 +239,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryEnd() { -Bug51557Client client = new Bug51557Client("X-Bug51557=", -"invalid"); +Bug51557Client client = new Bug51557Client("X-Bug51557=", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -259,8 +249,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private void doTestBug51557CharInName(char s) { -Bug51557Client client = -new Bug51557Client("X-Bug" + s + "51557", "invalid"); +Bug51557Client client = new Bug51557Client("X-Bug" + s + "51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -270,8 +259,7 @@ public class TestHttp11InputBuffer extends TomcatBa
[tomcat] 01/06: Handle CONNECT with deliberate 501 rather than accidental 400
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit be6a92b6256ed6ebc86e329e7b54ed9730b2ba4a Author: Mark Thomas AuthorDate: Thu Feb 23 16:37:30 2023 + Handle CONNECT with deliberate 501 rather than accidental 400 --- .../apache/catalina/connector/CoyoteAdapter.java | 84 -- .../catalina/connector/LocalStrings.properties | 1 + java/org/apache/coyote/http2/Stream.java | 6 +- .../apache/coyote/http11/TestHttp11Processor.java | 18 + .../apache/coyote/http2/TestStreamProcessor.java | 23 ++ webapps/docs/changelog.xml | 4 ++ 6 files changed, 95 insertions(+), 41 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index f9263b685d..fc1f3b54de 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -638,49 +638,55 @@ public class CoyoteAdapter implements Adapter { MessageBytes decodedURI = req.decodedURI(); -if (undecodedURI.getType() == MessageBytes.T_BYTES) { -// Copy the raw URI to the decodedURI -decodedURI.duplicate(undecodedURI); +// Filter CONNECT method +if (req.method().equalsIgnoreCase("CONNECT")) { +response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, sm.getString("coyoteAdapter.connect")); +} else { +// No URI for CONNECT requests +if (undecodedURI.getType() == MessageBytes.T_BYTES) { +// Copy the raw URI to the decodedURI +decodedURI.duplicate(undecodedURI); -// Parse (and strip out) the path parameters -parsePathParameters(req, request); +// Parse (and strip out) the path parameters +parsePathParameters(req, request); -// URI decoding -// %xx decoding of the URL -try { -req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); -} catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); -} -// Normalization -if (normalize(req.decodedURI())) { -// Character decoding -convertURI(decodedURI, request); -// Check that the URI is still normalized -// Note: checkNormalize is deprecated because the test is no -// longer required in Tomcat 10 onwards and has been -// removed -if (!checkNormalize(req.decodedURI())) { +// URI decoding +// %xx decoding of the URL +try { +req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); +} catch (IOException ioe) { +response.sendError(400, "Invalid URI: " + ioe.getMessage()); +} +// Normalization +if (normalize(req.decodedURI())) { +// Character decoding +convertURI(decodedURI, request); +// Check that the URI is still normalized +// Note: checkNormalize is deprecated because the test is no +// longer required in Tomcat 10 onwards and has been +// removed +if (!checkNormalize(req.decodedURI())) { +response.sendError(400, "Invalid URI"); +} +} else { response.sendError(400, "Invalid URI"); } } else { -response.sendError(400, "Invalid URI"); -} -} else { -/* The URI is chars or String, and has been sent using an in-memory - * protocol handler. The following assumptions are made: - * - req.requestURI() has been set to the 'original' non-decoded, - * non-normalized URI - * - req.decodedURI() has been set to the decoded, normalized form - * of req.requestURI() - */ -decodedURI.toChars(); -// Remove all path parameters; any needed path parameter should be set -// using the request object rather than passing it in the URL -CharChunk uriCC = decodedURI.getCharChunk(); -int semicolon = uriCC.indexOf(';'); -if (semicolon > 0) { -decodedURI.setChars(uriCC.getBuffer(), uriCC.getStart(), semicolon); +/* The URI is chars or String, and has been sent using an in-memory + * protocol handler. The following assumpti
[tomcat] 06/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 83df6cd2e356dea165f5dbeb0fa5dad51cfb72b9 Author: Mark Thomas AuthorDate: Thu Feb 23 16:59:19 2023 + Clean-up - formatting. No functional change. --- test/org/apache/coyote/http2/Http2TestBase.java| 215 +++ .../apache/coyote/http2/TestAbstractStream.java| 72 ++--- test/org/apache/coyote/http2/TestAsync.java| 19 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 24 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 ++- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 ++--- .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +-- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 ++-- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 53 ++-- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 ++-- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 ++--- .../apache/coyote/http2/TestHttp2Section_8_1.java | 69 ++--- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +--- test/org/apache/coyote/http2/TestLargeUpload.java | 14 +- test/org/apache/coyote/http2/TestStream.java | 32 +-- .../apache/coyote/http2/TestStreamProcessor.java | 26 +- .../apache/coyote/http2/TestStreamQueryString.java | 45 +--- .../org/apache/coyote/http2/TesterHttp2Parser.java | 6 +- 36 files changed, 531 insertions(+), 808 deletions(-) diff --git a/test/org/apache/coyote/http2/Http2TestBase.java b/test/org/apache/coyote/http2/Http2TestBase.java index 313bff6cc2..f03ba03b6d 100644 --- a/test/org/apache/coyote/http2/Http2TestBase.java +++ b/test/org/apache/coyote/http2/Http2TestBase.java @@ -63,8 +63,7 @@ import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.net.TesterSupport; /** - * Tests for compliance with the https://tools.ietf.org/html/rfc7540";> - * HTTP/2 specification. + * Tests for compliance with the https://tools.ietf.org/html/rfc7540";> HTTP/2 specification. */ @RunWith(Parameterized.class) public abstract class Http2TestBase extends TomcatBaseTest { @@ -98,8 +97,7 @@ public abstract class Http2TestBase extends TomcatBaseTest { private static final String HEADER_IGNORED = "x-ignore"; static final String DEFAULT_CONNECTION_HEADER_VALUE = "Upgrade, HTTP2-Settings"; -private static final byte[] EMPTY_SETTINGS_FRAME = -{ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }; +private static final byte[] EMPTY_SETTINGS_FRAME = { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }; static final String EMPTY_HTTP2_SETTINGS_HEADER; static { @@ -129,8 +127,8 @@ public abstract class Http2TestBase extends TomcatBaseTest { } /** - * Standard setup. Creates HTTP/2 connection via HTTP upgrade and ensures - * that the first response is correctly received. + * Standard setup. Creates HTTP/2 connection via HTTP upgrade and ensures that the first response is correctly + * received. */ protected void http2Connect() throws Exception { http2Connect(false); @@ -165,12 +163,8 @@ public abstract class Http2TestBase extends TomcatBaseTest { parser.readFrame(); parser.readFrame(); -Assert.assertEquals("0-Settings-[3]-[" + maxConcurrentStreams + "]\n" + -"0-Settings-End\n" + -"0-Settings-Ack\n" + -"0-Ping-[0,0,0,0,0,0,0,1]\n" + -getSimpleResponseTrace(1) -, output.getTrace()); +Assert.assertEquals("0-Settings-[3]-[" + maxConcurrentStreams + "]\n" + "0-Settings-End\n" + +"0-Settings-Ack\n" + "0-Ping-[0,0,0,0,0,0,0,1]\n" + getSimpleResponseTrace(1), output.getTrace()); output.clearTrace(); }
[tomcat] 01/06: Handle CONNECT with deliberate 501 rather than accidental 400
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 242196a8af1c7ab8a865c56e4852c7b5d648cd17 Author: Mark Thomas AuthorDate: Thu Feb 23 16:37:30 2023 + Handle CONNECT with deliberate 501 rather than accidental 400 --- .../apache/catalina/connector/CoyoteAdapter.java | 78 -- .../catalina/connector/LocalStrings.properties | 1 + java/org/apache/coyote/http2/Stream.java | 6 +- .../apache/coyote/http11/TestHttp11Processor.java | 18 + .../apache/coyote/http2/TestStreamProcessor.java | 23 +++ webapps/docs/changelog.xml | 4 ++ 6 files changed, 92 insertions(+), 38 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index ed5d5fc31d..104a83f3e4 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -645,46 +645,52 @@ public class CoyoteAdapter implements Adapter { MessageBytes decodedURI = req.decodedURI(); -if (undecodedURI.getType() == MessageBytes.T_BYTES) { -// Copy the raw URI to the decodedURI -decodedURI.duplicate(undecodedURI); +// Filter CONNECT method +if (req.method().equalsIgnoreCase("CONNECT")) { +response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, sm.getString("coyoteAdapter.connect")); +} else { +// No URI for CONNECT requests +if (undecodedURI.getType() == MessageBytes.T_BYTES) { +// Copy the raw URI to the decodedURI +decodedURI.duplicate(undecodedURI); -// Parse (and strip out) the path parameters -parsePathParameters(req, request); +// Parse (and strip out) the path parameters +parsePathParameters(req, request); -// URI decoding -// %xx decoding of the URL -try { -req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); -} catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); -} -// Normalization -if (normalize(req.decodedURI())) { -// Character decoding -convertURI(decodedURI, request); -// Check that the URI is still normalized -if (!checkNormalize(req.decodedURI())) { +// URI decoding +// %xx decoding of the URL +try { +req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); +} catch (IOException ioe) { +response.sendError(400, "Invalid URI: " + ioe.getMessage()); +} +// Normalization +if (normalize(req.decodedURI())) { +// Character decoding +convertURI(decodedURI, request); +// Check that the URI is still normalized +if (!checkNormalize(req.decodedURI())) { +response.sendError(400, "Invalid URI"); +} +} else { response.sendError(400, "Invalid URI"); } } else { -response.sendError(400, "Invalid URI"); -} -} else { -/* The URI is chars or String, and has been sent using an in-memory - * protocol handler. The following assumptions are made: - * - req.requestURI() has been set to the 'original' non-decoded, - * non-normalized URI - * - req.decodedURI() has been set to the decoded, normalized form - * of req.requestURI() - */ -decodedURI.toChars(); -// Remove all path parameters; any needed path parameter should be set -// using the request object rather than passing it in the URL -CharChunk uriCC = decodedURI.getCharChunk(); -int semicolon = uriCC.indexOf(';'); -if (semicolon > 0) { -decodedURI.setChars(uriCC.getBuffer(), uriCC.getStart(), semicolon); +/* The URI is chars or String, and has been sent using an in-memory + * protocol handler. The following assumptions are made: + * - req.requestURI() has been set to the 'original' non-decoded, + * non-normalized URI + * - req.decodedURI() has been set to the decoded, normalized form + * of req.requestURI() + */ +decodedURI.toChars(); +// Remove all path parameters; any needed pat
[tomcat] 04/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 0cbd2e470658e51ed47df7807315156f1ca56239 Author: Mark Thomas AuthorDate: Thu Feb 23 17:05:49 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/AbstractHttp11JsseProtocol.java | 27 +- .../coyote/http11/AbstractHttp11Protocol.java | 367 ++--- java/org/apache/coyote/http11/Constants.java | 6 +- .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11AprProtocol.java| 34 +- .../apache/coyote/http11/Http11InputBuffer.java| 168 -- .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 111 +++ java/org/apache/coyote/http11/Http11Processor.java | 227 ++--- .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- 13 files changed, 521 insertions(+), 467 deletions(-) diff --git a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java index d8241a6bac..6f6fff40e8 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java @@ -19,18 +19,17 @@ package org.apache.coyote.http11; import org.apache.tomcat.util.net.AbstractJsseEndpoint; import org.apache.tomcat.util.net.openssl.OpenSSLImplementation; -public abstract class AbstractHttp11JsseProtocol -extends AbstractHttp11Protocol { +public abstract class AbstractHttp11JsseProtocol extends AbstractHttp11Protocol { -public AbstractHttp11JsseProtocol(AbstractJsseEndpoint endpoint) { +public AbstractHttp11JsseProtocol(AbstractJsseEndpoint endpoint) { super(endpoint); } @Override -protected AbstractJsseEndpoint getEndpoint() { +protected AbstractJsseEndpoint getEndpoint() { // Over-ridden to add cast -return (AbstractJsseEndpoint) super.getEndpoint(); +return (AbstractJsseEndpoint) super.getEndpoint(); } @@ -38,18 +37,26 @@ public abstract class AbstractHttp11JsseProtocol if (OpenSSLImplementation.class.getName().equals(getSslImplementationName())) { return "openssl"; } -if (getSslImplementationName() != null -&& getSslImplementationName().endsWith(".panama.OpenSSLImplementation")) { +if (getSslImplementationName() != null && + getSslImplementationName().endsWith(".panama.OpenSSLImplementation")) { return "opensslforeign"; } return "jsse"; } -public String getSslImplementationName() { return getEndpoint().getSslImplementationName(); } -public void setSslImplementationName(String s) { getEndpoint().setSslImplementationName(s); } +public String getSslImplementationName() { +return getEndpoint().getSslImplementationName(); +} + +public void setSslImplementationName(String s) { +getEndpoint().setSslImplementationName(s); +} -public int getSniParseLimit() { return getEndpoint().getSniParseLimit(); } +public int getSniParseLimit() { +return getEndpoint().getSniParseLimit(); +} + public void setSniParseLimit(int sniParseLimit) { getEndpoint().setSniParseLimit(sniParseLimit); } diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java index 82d0a7166e..a337f07234 100644 --- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java +++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java @@ -53,13 +53,12 @@ import org.apache.tomcat.util.res.StringManager; public abstract class AbstractHttp11Protocol extends AbstractProtocol { -protected static final StringManager sm = -StringManager.getManager(AbstractHttp11Protocol.class); +protected static final StringManager sm = StringManager.getManager(AbstractHttp11Protocol.class); private final CompressionConfig compressionConfig = new CompressionConfig(); -public AbstractHttp11Protocol(AbstractEndpoint endpoint) { +public AbstractHttp11Protocol(AbstractEndpoint endpoint) { super(endpoint); setConnectionTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT); } @@ -117,7 +116,7 @@ public abstract class AbstractHttp11Protocol extends AbstractProtocol { * Over-ridden here to make the method visible to nested classes. */ @Override -protected AbstractEndpoint getEndpoint() { +protected AbstractEndpoint getEndpoint() { return super.getEndpoint(); } @@ -126,61 +125,70 @@ public abstr
[tomcat] 05/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 96da1136f41449e940abc12eced3985367a57a12 Author: Mark Thomas AuthorDate: Thu Feb 23 17:06:01 2023 + Clean-up - formatting. No functional change. --- .../coyote/http11/TestHttp11InputBuffer.java | 122 ++--- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +-- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 504 - 4 files changed, 236 insertions(+), 458 deletions(-) diff --git a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java index 46e6ccefc2..104f2b4724 100644 --- a/test/org/apache/coyote/http11/TestHttp11InputBuffer.java +++ b/test/org/apache/coyote/http11/TestHttp11InputBuffer.java @@ -39,7 +39,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private static final String CR = "\r"; private static final String LF = "\n"; -private static final String CRLF = CR + LF; +private static final String CRLF = CR + LF; /** * Test case for https://bz.apache.org/bugzilla/show_bug.cgi?id=48839 @@ -76,13 +76,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { connect(); String[] request = new String[1]; -request[0] = -"GET http://localhost:8080/test HTTP/1.1" + CRLF + -"Host: localhost:8080" + CRLF + -"X-Bug48839: abcd" + CRLF + -"\tefgh" + CRLF + -"Connection: close" + CRLF + -CRLF; +request[0] = "GET http://localhost:8080/test HTTP/1.1" + CRLF + "Host: localhost:8080" + CRLF + +"X-Bug48839: abcd" + CRLF + "\tefgh" + CRLF + "Connection: close" + CRLF + CRLF; setRequest(request); processRequest(); // blocks until response has been read @@ -116,8 +111,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { * Only interested in the request headers from a GET request */ @Override -protected void doGet(HttpServletRequest req, HttpServletResponse resp) -throws ServletException, IOException { +protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // Just echo the header value back as plain text resp.setContentType("text/plain"); @@ -167,9 +161,8 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557SeparatorsInName() throws Exception { -char httpSeparators[] = new char[] { -'\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', -'=', '>', '?', '@', '[', '\\', ']', '{', '}' }; +char httpSeparators[] = new char[] { '\t', ' ', '\"', '(', ')', ',', '/', ':', ';', '<', '=', '>', '?', '@', +'[', '\\', ']', '{', '}' }; for (char s : httpSeparators) { doTestBug51557CharInName(s); @@ -222,8 +215,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557Continuation() { -Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", -"foo" + SimpleHttpClient.CRLF + " bar"); +Bug51557Client client = new Bug51557Client("X-Bug=51557NoColon", "foo" + SimpleHttpClient.CRLF + " bar"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -235,8 +227,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryStart() { -Bug51557Client client = new Bug51557Client("=X-Bug51557", -"invalid"); +Bug51557Client client = new Bug51557Client("=X-Bug51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -248,8 +239,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { @Test public void testBug51557BoundaryEnd() { -Bug51557Client client = new Bug51557Client("X-Bug51557=", -"invalid"); +Bug51557Client client = new Bug51557Client("X-Bug51557=", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -259,8 +249,7 @@ public class TestHttp11InputBuffer extends TomcatBaseTest { private void doTestBug51557CharInName(char s) { -Bug51557Client client = -new Bug51557Client("X-Bug" + s + "51557", "invalid"); +Bug51557Client client = new Bug51557Client("X-Bug" + s + "51557", "invalid"); client.doRequest(); Assert.assertTrue(client.isResponse200()); @@ -270,8 +259,7 @@ public class TestHttp11InputBuffer extends TomcatBa
[tomcat] branch 8.5.x updated (2b51e32a60 -> 269b83e1b6)
This is an automated email from the ASF dual-hosted git repository. markt pushed a change to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git from 2b51e32a60 Validate the scheme pseudo-header in HTTP/2 new 242196a8af Handle CONNECT with deliberate 501 rather than accidental 400 new 0dc38c964f Use i18n new 04cc1839fa Clean-up - formatting. No functional change. new 0cbd2e4706 Clean-up - formatting. No functional change. new 96da1136f4 Clean-up - formatting. No functional change. new 269b83e1b6 Clean-up - formatting. No functional change. The 6 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: .../catalina/connector/ClientAbortException.java | 10 +- java/org/apache/catalina/connector/Connector.java | 255 +++--- .../apache/catalina/connector/CoyoteAdapter.java | 323 .../catalina/connector/CoyoteInputStream.java | 76 +- .../catalina/connector/CoyoteOutputStream.java | 16 +- .../apache/catalina/connector/CoyotePrincipal.java | 7 +- .../apache/catalina/connector/CoyoteReader.java| 37 +- .../apache/catalina/connector/CoyoteWriter.java| 5 +- .../org/apache/catalina/connector/InputBuffer.java | 33 +- .../catalina/connector/LocalStrings.properties | 4 + .../apache/catalina/connector/OutputBuffer.java| 49 +- java/org/apache/catalina/connector/Request.java| 854 + .../apache/catalina/connector/RequestFacade.java | 143 ++-- java/org/apache/catalina/connector/Response.java | 343 - .../apache/catalina/connector/ResponseFacade.java | 23 +- .../coyote/http11/AbstractHttp11JsseProtocol.java | 27 +- .../coyote/http11/AbstractHttp11Protocol.java | 367 ++--- java/org/apache/coyote/http11/Constants.java | 6 +- .../coyote/http11/HeadersTooLargeException.java| 3 +- .../apache/coyote/http11/Http11AprProtocol.java| 34 +- .../apache/coyote/http11/Http11InputBuffer.java| 168 ++-- .../apache/coyote/http11/Http11Nio2Protocol.java | 6 +- .../apache/coyote/http11/Http11NioProtocol.java| 14 +- .../apache/coyote/http11/Http11OutputBuffer.java | 111 ++- java/org/apache/coyote/http11/Http11Processor.java | 227 +++--- .../org/apache/coyote/http11/HttpOutputBuffer.java | 5 +- java/org/apache/coyote/http11/InputFilter.java | 15 +- java/org/apache/coyote/http11/OutputFilter.java| 5 +- java/org/apache/coyote/http2/Stream.java | 6 +- .../coyote/http11/TestHttp11InputBuffer.java | 122 +-- .../coyote/http11/TestHttp11InputBufferCRLF.java | 66 +- .../coyote/http11/TestHttp11OutputBuffer.java | 2 +- .../apache/coyote/http11/TestHttp11Processor.java | 512 +--- test/org/apache/coyote/http2/Http2TestBase.java| 218 +++--- .../apache/coyote/http2/TestAbstractStream.java| 72 +- test/org/apache/coyote/http2/TestAsync.java| 22 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 24 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 +- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 --- .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 +- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 53 +- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 +- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 +- .../apache/coyote/http2/TestHttp2Section_8_1.java | 69 +- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +- test/org/apache/coyote/http2/TestLargeUpload.java | 4 +- test/org/apache/coyote/http2/TestStream.java | 14 +- .../apache/coyote/http2/TestStreamProcesso
[tomcat] 02/06: Use i18n
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 0dc38c964fc2d9aaddbb9564fff33551e74a6585 Author: Mark Thomas AuthorDate: Thu Feb 23 16:41:59 2023 + Use i18n --- java/org/apache/catalina/connector/CoyoteAdapter.java | 8 java/org/apache/catalina/connector/LocalStrings.properties | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 104a83f3e4..9c0d524489 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -639,7 +639,7 @@ public class CoyoteAdapter implements Adapter { connector.getService().getContainer().logAccess(request, response, 0, true); return false; } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } @@ -662,7 +662,7 @@ public class CoyoteAdapter implements Adapter { try { req.getURLDecoder().convert(decodedURI.getByteChunk(), connector.getEncodedSolidusHandlingInternal()); } catch (IOException ioe) { -response.sendError(400, "Invalid URI: " + ioe.getMessage()); +response.sendError(400, sm.getString("coyoteAdapter.invalidURIWithMessage", ioe.getMessage())); } // Normalization if (normalize(req.decodedURI())) { @@ -673,7 +673,7 @@ public class CoyoteAdapter implements Adapter { response.sendError(400, "Invalid URI"); } } else { -response.sendError(400, "Invalid URI"); +response.sendError(400, sm.getString("coyoteAdapter.invalidURI")); } } else { /* The URI is chars or String, and has been sent using an in-memory @@ -869,7 +869,7 @@ public class CoyoteAdapter implements Adapter { if (header != null) { res.addHeader("Allow", header); } -response.sendError(405, "TRACE method is not allowed"); +response.sendError(405, sm.getString("coyoteAdapter.trace")); // Safe to skip the remainder of this method. return true; } diff --git a/java/org/apache/catalina/connector/LocalStrings.properties b/java/org/apache/catalina/connector/LocalStrings.properties index 7d09d69279..f511e2e836 100644 --- a/java/org/apache/catalina/connector/LocalStrings.properties +++ b/java/org/apache/catalina/connector/LocalStrings.properties @@ -21,7 +21,10 @@ coyoteAdapter.checkRecycled.request=Encountered a non-recycled request and recyc coyoteAdapter.checkRecycled.response=Encountered a non-recycled response and recycled it forcedly. coyoteAdapter.connect=HTTP requests using the CONNECT method are not supported coyoteAdapter.debug=The variable [{0}] has value [{1}] +coyoteAdapter.invalidURI=Invalid URI +coyoteAdapter.invalidURIWithMessage=Invalid URI: [{0}] coyoteAdapter.nullRequest=An asynchronous dispatch may only happen on an existing request +coyoteAdapter.trace=TRACE method is not allowed coyoteConnector.invalidEncoding=The encoding [{0}] is not recognised by the JRE. The Connector will continue to use [{1}] coyoteConnector.invalidPort=The connector cannot start since the specified port value of [{0}] is invalid - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 06/06: Clean-up - formatting. No functional change.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 269b83e1b60a2ec1c43fa67bbc899b1fa836ac62 Author: Mark Thomas AuthorDate: Thu Feb 23 17:06:10 2023 + Clean-up - formatting. No functional change. --- test/org/apache/coyote/http2/Http2TestBase.java| 218 +++ .../apache/coyote/http2/TestAbstractStream.java| 72 ++--- test/org/apache/coyote/http2/TestAsync.java| 22 +- test/org/apache/coyote/http2/TestAsyncFlush.java | 5 +- test/org/apache/coyote/http2/TestAsyncTimeout.java | 3 +- .../apache/coyote/http2/TestCancelledUpload.java | 24 +- test/org/apache/coyote/http2/TestFlowControl.java | 20 +- test/org/apache/coyote/http2/TestHpack.java| 8 +- .../coyote/http2/TestHttp2InitialConnection.java | 40 ++- test/org/apache/coyote/http2/TestHttp2Limits.java | 294 ++--- .../apache/coyote/http2/TestHttp2Section_3_2.java | 31 +-- .../apache/coyote/http2/TestHttp2Section_3_5.java | 4 +- .../apache/coyote/http2/TestHttp2Section_4_1.java | 10 +- .../apache/coyote/http2/TestHttp2Section_4_2.java | 14 +- .../apache/coyote/http2/TestHttp2Section_4_3.java | 11 +- .../apache/coyote/http2/TestHttp2Section_5_1.java | 55 ++-- .../apache/coyote/http2/TestHttp2Section_5_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_5_3.java | 53 ++-- .../apache/coyote/http2/TestHttp2Section_5_5.java | 9 +- .../apache/coyote/http2/TestHttp2Section_6_1.java | 50 ++-- .../apache/coyote/http2/TestHttp2Section_6_2.java | 13 +- .../apache/coyote/http2/TestHttp2Section_6_3.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_4.java | 10 +- .../apache/coyote/http2/TestHttp2Section_6_5.java | 22 +- .../apache/coyote/http2/TestHttp2Section_6_6.java | 5 +- .../apache/coyote/http2/TestHttp2Section_6_7.java | 7 +- .../apache/coyote/http2/TestHttp2Section_6_8.java | 11 +- .../apache/coyote/http2/TestHttp2Section_6_9.java | 63 ++--- .../apache/coyote/http2/TestHttp2Section_8_1.java | 69 ++--- .../org/apache/coyote/http2/TestHttp2Timeouts.java | 10 +- .../coyote/http2/TestHttp2UpgradeHandler.java | 46 +--- test/org/apache/coyote/http2/TestLargeUpload.java | 4 +- test/org/apache/coyote/http2/TestStream.java | 14 +- .../apache/coyote/http2/TestStreamProcessor.java | 26 +- .../apache/coyote/http2/TestStreamQueryString.java | 43 +-- .../org/apache/coyote/http2/TesterHttp2Parser.java | 3 +- 36 files changed, 522 insertions(+), 790 deletions(-) diff --git a/test/org/apache/coyote/http2/Http2TestBase.java b/test/org/apache/coyote/http2/Http2TestBase.java index 306d57f084..e02486d06d 100644 --- a/test/org/apache/coyote/http2/Http2TestBase.java +++ b/test/org/apache/coyote/http2/Http2TestBase.java @@ -58,8 +58,7 @@ import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.net.TesterSupport; /** - * Tests for compliance with the https://tools.ietf.org/html/rfc7540";> - * HTTP/2 specification. + * Tests for compliance with the https://tools.ietf.org/html/rfc7540";> HTTP/2 specification. */ @org.junit.runner.RunWith(org.junit.runners.Parameterized.class) public abstract class Http2TestBase extends TomcatBaseTest { @@ -78,8 +77,7 @@ public abstract class Http2TestBase extends TomcatBaseTest { private static final String HEADER_IGNORED = "x-ignore"; static final String DEFAULT_CONNECTION_HEADER_VALUE = "Upgrade, HTTP2-Settings"; -private static final byte[] EMPTY_SETTINGS_FRAME = -{ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }; +private static final byte[] EMPTY_SETTINGS_FRAME = { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }; static final String EMPTY_HTTP2_SETTINGS_HEADER; static { @@ -109,8 +107,8 @@ public abstract class Http2TestBase extends TomcatBaseTest { } /** - * Standard setup. Creates HTTP/2 connection via HTTP upgrade and ensures - * that the first response is correctly received. + * Standard setup. Creates HTTP/2 connection via HTTP upgrade and ensures that the first response is correctly + * received. */ protected void http2Connect() throws Exception { http2Connect(false); @@ -145,12 +143,8 @@ public abstract class Http2TestBase extends TomcatBaseTest { parser.readFrame(); parser.readFrame(); -Assert.assertEquals("0-Settings-[3]-[" + maxConcurrentStreams + "]\n" + -"0-Settings-End\n" + -"0-Settings-Ack\n" + -"0-Ping-[0,0,0,0,0,0,0,1]\n" + -getSimpleResponseTrace(1) -, output.getTrace()); +Assert.assertEquals("0-Settings-[3]-[" + maxConcurrentStreams + "]\n" + "0-Settings-End\n" + +"0-Settings-Ack\n" + "0-Ping-[0,0,0,0,0,0,0,1]\n" + getSimpleResponseTrace(1), output.getTrace());
Buildbot success in on tomcat-9.0.x
Build status: Build succeeded! Worker used: bb_worker2_ubuntu URL: https://ci2.apache.org/#builders/37/builds/467 Blamelist: Mark Thomas Build Text: build successful Status Detected: restored build Build Source Stamp: [branch 9.0.x] 83df6cd2e356dea165f5dbeb0fa5dad51cfb72b9 Steps: worker_preparation: 0 git: 0 shell: 0 shell_1: 0 shell_2: 0 shell_3: 0 shell_4: 0 shell_5: 0 compile: 1 shell_6: 0 shell_7: 0 shell_8: 0 shell_9: 0 Rsync docs to nightlies.apache.org: 0 shell_10: 0 Rsync RAT to nightlies.apache.org: 0 compile_1: 1 shell_11: 0 Rsync Logs to nightlies.apache.org: 0 -- ASF Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [VOTE] Release Apache Tomcat 10.1.6
вс, 19 февр. 2023 г. в 17:11, Christopher Schultz : > > The proposed Apache Tomcat 10.1.6 release is now available for > voting. > > The notable changes compared to 10.1.5 are: > > - Switch to using the ServiceLoader mechanism to load the custom URL >protocol handlers that Tomcat uses. > > - Update the packaged version of the Apache Tomcat Native Library to >2.0.3 to pick up the Windows binaries built with with OpenSSL 3.0.8. > > - Add the shared address space specified by RFC 6598 (100.64.0.0/10) >to the list of trusted proxies for RemoteIPValve/Filter. > > - Limit access to examples web application to localhost by default and documentation > > For full details, see the change log: > https://nightlies.apache.org/tomcat/tomcat-10.1.x/docs/changelog.html > > Applications that run on Tomcat 9 and earlier will not run on Tomcat 10 > without changes. Java EE applications designed for Tomcat 9 and earlier > may be placed in the $CATALINA_BASE/webapps-javaee directory and Tomcat > will automatically convert them to Jakarta EE and copy them to the > webapps directory. > > It can be obtained from: > https://dist.apache.org/repos/dist/dev/tomcat/tomcat-10/v10.1.6/ > > The Maven staging repo is: > https://repository.apache.org/content/repositories/orgapachetomcat-1421 > > The tag is: > https://github.com/apache/tomcat/tree/10.1.6 > 9829c929059f96605a3fb870700b5887970d7203 > > The proposed 10.1.6 release is: > [ ] Broken - do not release > [x] Stable - go ahead and release as 10.1.6 Smoke tests OK with Java 11.0.18. Unit tests OK, all connectors (NIO, NIO2), with or without Tomcat Native, with Java 11.0.18. on Windows 10. Best regards, Konstantin Kolinko - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org