Re: [tomcat] branch 9.0.x updated: Additional fixes for 66076
On Tue, May 24, 2022 at 6:46 PM wrote: > > 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 680db4448d Additional fixes for 66076 > 680db4448d is described below > > commit 680db4448d392752fb57b91639e7ab34a3f58105 > Author: Mark Thomas > AuthorDate: Tue May 24 17:46:20 2022 +0100 > > Additional fixes for 66076 > > The vectored IO version of the fix. > --- > java/org/apache/tomcat/util/net/AprEndpoint.java | 7 +++ > java/org/apache/tomcat/util/net/Nio2Endpoint.java | 7 +++ > java/org/apache/tomcat/util/net/NioEndpoint.java | 19 > --- > .../org/apache/tomcat/util/net/SocketWrapperBase.java | 4 +++- > 4 files changed, 29 insertions(+), 8 deletions(-) > > diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java > b/java/org/apache/tomcat/util/net/AprEndpoint.java > index c02e90fc09..20d10efa11 100644 > --- a/java/org/apache/tomcat/util/net/AprEndpoint.java > +++ b/java/org/apache/tomcat/util/net/AprEndpoint.java > @@ -2813,6 +2813,13 @@ public class AprEndpoint extends > AbstractEndpoint implements SNICallB > return inline; > } > > +@Override > +protected boolean hasOutboundRemaining() { > +// NIO2 never has remaining outbound data when the completion > +// handler is called > +return false; > +} > + > @Override > public void run() { > // Perform the IO operation > diff --git a/java/org/apache/tomcat/util/net/Nio2Endpoint.java > b/java/org/apache/tomcat/util/net/Nio2Endpoint.java > index 49ee411016..c5b9a395f5 100644 > --- a/java/org/apache/tomcat/util/net/Nio2Endpoint.java > +++ b/java/org/apache/tomcat/util/net/Nio2Endpoint.java > @@ -1021,6 +1021,13 @@ public class Nio2Endpoint extends > AbstractJsseEndpoint return Nio2Endpoint.isInline(); > } > > +@Override > +protected boolean hasOutboundRemaining() { > +// NIO2 never has remaining outbound data when the completion > +// handler is called > +return false; > +} > + > @Override > protected void start() { > if (read) { > diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java > b/java/org/apache/tomcat/util/net/NioEndpoint.java > index b8b6d4339d..ea65dd6600 100644 > --- a/java/org/apache/tomcat/util/net/NioEndpoint.java > +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java > @@ -1622,6 +1622,11 @@ public class NioEndpoint extends > AbstractJsseEndpoint > return inline; > } > > +@Override > +protected boolean hasOutboundRemaining() { > +return getSocket().getOutboundRemaining() > 0; > +} > + > @Override > public void run() { > // Perform the IO operation > @@ -1654,13 +1659,13 @@ public class NioEndpoint extends > AbstractJsseEndpoint > } else { > boolean doWrite = true; > // Write from main buffer first > -if > (!socketBufferHandler.isWriteBufferEmpty()) { > +if (socketOrNetworkBufferHasDataLeft()) { > // There is still data inside the main > write buffer, it needs to be written first > > socketBufferHandler.configureWriteBufferForRead(); > do { > nBytes = > getSocket().write(socketBufferHandler.getWriteBuffer()); > -} while > (!socketBufferHandler.isWriteBufferEmpty() && nBytes > 0); > -if > (!socketBufferHandler.isWriteBufferEmpty()) { > +} while > (socketOrNetworkBufferHasDataLeft() && nBytes > 0); > +if (socketOrNetworkBufferHasDataLeft()) { > doWrite = false; > } > // Preserve a negative value since it is > an error > @@ -1681,7 +1686,8 @@ public class NioEndpoint extends > AbstractJsseEndpoint > updateLastWrite(); > } > } > -if (nBytes != 0 || > !buffersArrayHasRemaining(buffers, offset, length)) { > +if (nBytes != 0 || > (!buffersArrayHasRemaining(buffers, offset, length) && > +!s
[Bug 66088] New: "MaxDays" property in "logging,properties" file in /Conf directory is not working
https://bz.apache.org/bugzilla/show_bug.cgi?id=66088 Bug ID: 66088 Summary: "MaxDays" property in "logging,properties" file in /Conf directory is not working Product: Tomcat 8 Version: 8.5.23 Hardware: PC Status: NEW Severity: critical Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: jasdeep.dhil...@toronto.ca Target Milestone: Created attachment 38305 --> https://bz.apache.org/bugzilla/attachment.cgi?id=38305&action=edit ApacheTomcatVersion Hi, We have Tomcat 8.5.23 installed in our Production environment. Catalina log files are getting generated without any purge interval. I tried to put the "MaxDays" property in "logging,properties" file in /Conf directory but it didn't worked (even after restarting Tomcat services twice). I have added the following lines 1catalina.org.apache.juli.AsyncFileHandler.maxDays 1catalina.org.apache.juli.AsyncFileHandler.level = FINE 1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90 2localhost.org.apache.juli.AsyncFileHandler.level = FINE 2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. 2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90 3manager.org.apache.juli.AsyncFileHandler.level = FINE 3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 3manager.org.apache.juli.AsyncFileHandler.maxDays = 90 4host-manager.org.apache.juli.AsyncFileHandler.level = FINE 4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. 4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90 -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66088] "MaxDays" property in "logging,properties" file in /Conf directory is not working
https://bz.apache.org/bugzilla/show_bug.cgi?id=66088 Konstantin Kolinko changed: What|Removed |Added OS||All Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #1 from Konstantin Kolinko --- 1. See the changelog. That feature was implemented in Tomcat 8.5.30. 2. Bugzilla is NOT the place to ask support questions. It is a bug database. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66089] New: Tomcat 9.0.63 won't start when used with a SSL certificate containing a RSA Private Key
https://bz.apache.org/bugzilla/show_bug.cgi?id=66089 Bug ID: 66089 Summary: Tomcat 9.0.63 won't start when used with a SSL certificate containing a RSA Private Key Product: Tomcat 9 Version: 9.0.63 Hardware: All OS: All Status: NEW Severity: blocker Priority: P2 Component: Util Assignee: dev@tomcat.apache.org Reporter: d...@mitre.org Target Milestone: - Our tomcat 9 server has an existing SSL certificate (Entrust CA) which contains a RSA Private Key. This SSL certificate worked fine when run with Tomcat 9.0.62 but won't work when Tomcat 9.0.63 is installed. I show the stack trace at the end of this message. Note that this only happens when starting the service with a SSL certificate that contains a RSA Private Key. We've tested on other tomcat servers that have a SSL certificate that contains a Private Key, and in this case tomcat 9.0.63 starts up fine. I compared Tomcat source 9.0.62 vs. 9.0.63 and it looks there is a bug in org/apache/tomcat/util/net/jsse/PEMFile.java: - in tomcat 9.0.62 in PEMFile.java, on line 132 case 'Part.RSA_PRIVATE_KEY', the private key is constructed with this statement: privateKey = part.toPrivateKey(null, keyAlgorithm, Format.PKCS1); - in tomcat 9.0.63 in PEMFile.java, on line 146 case Part.RSA_PRIVATE_KEY', the private key is constructed with this statement: privateKey = part.toPrivateKey(password, keyAlgorithm, Format.PKCS1); Since our RSA private key doesn't have a password, passing password=null is the correct option. Tomcat 9.0.63 stack trace when a SSL certificate with a RSA Private Key is shown here: 16-May-2022 18:52:30.849 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8443]] org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:1049) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:556) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1042) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:724) at org.apache.catalina.startup.Catalina.load(Catalina.java:746) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475) Caused by: java.lang.IllegalArgumentException: overrun, bytes = 924 at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:107) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:234) at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1227) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1240) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:603) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:80) at org.apache.catalina.connector.Connector.initInternal(Connector.java:1046) ... 13 more Caused by: java.io.IOException: overrun, bytes = 924 at javax.crypto.EncryptedPrivateKeyInfo.(EncryptedPrivateKeyInfo.java:95) at org.apache.tomcat.util.net.jsse.PEMFile$Part.toPrivateKey(PEMFile.java:204) at org.apache.tomcat.util.net.jsse.PEMFile.(PEMFile.java:146) at org.apache.tomcat.util.net.jsse.PEMFile.(PEMFile.java:98) at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:316) at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:105) ... 20 more Tomcat build information is here: 16-May-2022 18:52:30.473 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version
[Bug 66089] Tomcat 9.0.63 won't start when used with a SSL certificate containing a RSA Private Key
https://bz.apache.org/bugzilla/show_bug.cgi?id=66089 --- Comment #1 from Remy Maucherat --- This change was part of the PR, and I don't see any reason for it ... -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66089] Tomcat 9.0.63 won't start when used with a SSL certificate containing a RSA Private Key
https://bz.apache.org/bugzilla/show_bug.cgi?id=66089 --- Comment #2 from jfclere --- I think the logic looks for something like: -BEGIN RSA PRIVATE KEY- Proc-Type: 4,ENCRYPTED DEK-Info: AES-256-CBC,E9F2FB791E9BAAEC7BEE71DA73CA35F3 4LBH2H34b4BW0C2v8VYkp8/MCWPmW7iJnuqvH103DxnFV+PBnXXeEjiUsqVEma1x but not all the encrypted privated key have it: BEGIN ENCRYPTED PRIVATE KEY- MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIgorSE4d41bECAggA A quick work-around is to encrypt or reencrypt the key. something like: openssl rsa -aes256 -in newkey.pem -out newkey.aes-256.pem -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66076] Final block of encrypted response payload not being sent occasionally over TLS
https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 --- Comment #16 from Phil Clay --- Good news! The test has been running with no failures continuously since my last comment. I'll keep letting it run today. But I'm pretty confident that the problem is fixed since the test would normally fail after a few of hours. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 01/01: Fix BZ 66089
This is an automated email from the ASF dual-hosted git repository. jfclere pushed a commit to branch jfclere-patch-1 in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 0ca5bf9616891ac4fa6ce30cd17f323bdb5079a1 Author: Jean-Frederic Clere AuthorDate: Wed May 25 18:55:28 2022 +0200 Fix BZ 66089 Sorry encrypted RSA PRIVATE KEY need null password --- java/org/apache/tomcat/util/net/jsse/PEMFile.java | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/java/org/apache/tomcat/util/net/jsse/PEMFile.java b/java/org/apache/tomcat/util/net/jsse/PEMFile.java index 80c585d3b8..5397012b3f 100644 --- a/java/org/apache/tomcat/util/net/jsse/PEMFile.java +++ b/java/org/apache/tomcat/util/net/jsse/PEMFile.java @@ -143,7 +143,10 @@ public class PEMFile { privateKey = part.toPrivateKey(password, keyAlgorithm, Format.PKCS8); break; case Part.RSA_PRIVATE_KEY: -privateKey = part.toPrivateKey(password, keyAlgorithm, Format.PKCS1); +if (part.algorithm != null) +privateKey = part.toPrivateKey(password, keyAlgorithm, Format.PKCS1); +else +privateKey = part.toPrivateKey(null, keyAlgorithm, Format.PKCS1); break; case Part.CERTIFICATE: case Part.X509_CERTIFICATE: - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] jfclere opened a new pull request, #517: Fix BZ 66089
jfclere opened a new pull request, #517: URL: https://github.com/apache/tomcat/pull/517 Sorry encrypted RSA PRIVATE KEY need null password -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch jfclere-patch-1 created (now 0ca5bf9616)
This is an automated email from the ASF dual-hosted git repository. jfclere pushed a change to branch jfclere-patch-1 in repository https://gitbox.apache.org/repos/asf/tomcat.git at 0ca5bf9616 Fix BZ 66089 This branch includes the following new commits: new 0ca5bf9616 Fix BZ 66089 The 1 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. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66089] Tomcat 9.0.63 won't start when used with a SSL certificate containing a RSA Private Key
https://bz.apache.org/bugzilla/show_bug.cgi?id=66089 --- Comment #3 from jfclere --- https://github.com/apache/tomcat/pull/517 should fix the problem. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] michael-o commented on pull request #517: Fix BZ 66089
michael-o commented on PR #517: URL: https://github.com/apache/tomcat/pull/517#issuecomment-1137758112 For god's sake don't let @rmaucher see that you have created a branch. YOU HAVE INVENTED FIRE. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] rmaucher commented on pull request #517: Fix BZ 66089
rmaucher commented on PR #517: URL: https://github.com/apache/tomcat/pull/517#issuecomment-1137858538 Indeed creating the branch (or doing a PR) was not useful at all in this case, thanks for pointing it out. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat-training] dependabot[bot] opened a new pull request, #6: Bump grunt from 1.0.2 to 1.5.3
dependabot[bot] opened a new pull request, #6: URL: https://github.com/apache/tomcat-training/pull/6 Bumps [grunt](https://github.com/gruntjs/grunt) from 1.0.2 to 1.5.3. Release notes Sourced from https://github.com/gruntjs/grunt/releases";>grunt's releases. v1.5.3 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1745";>#1745 from gruntjs/fix-copy-op 572d79b Patch up race condition in symlink copying. 58016ff Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1746";>#1746 from JamieSlome/patch-1 0749e1d Create SECURITY.md 69b7c50 https://github.com/gruntjs/grunt/compare/v1.5.2...v1.5.3";>https://github.com/gruntjs/grunt/compare/v1.5.2...v1.5.3 v1.5.2 Update Changelog 7f15fd5 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1743";>#1743 from gruntjs/cleanup-link b0ec6e1 Clean up link handling 433f91b https://github.com/gruntjs/grunt/compare/v1.5.1...v1.5.2";>https://github.com/gruntjs/grunt/compare/v1.5.1...v1.5.2 v1.5.1 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1742";>#1742 from gruntjs/update-symlink-test ad22608 Fix symlink test 0652305 https://github.com/gruntjs/grunt/compare/v1.5.0...v1.5.1";>https://github.com/gruntjs/grunt/compare/v1.5.0...v1.5.1 v1.5.0 Updated changelog b2b2c2b Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1740";>#1740 from gruntjs/update-deps-22-10 3eda6ae Update testing matrix 47d32de More updates 2e9161c Remove console log 04b960e Update dependencies, tests... aad3d45 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1736";>#1736 from justlep/main fdc7056 support .cjs extension e35fe54 https://github.com/gruntjs/grunt/compare/v1.4.1...v1.5.0";>https://github.com/gruntjs/grunt/compare/v1.4.1...v1.5.0 v1.4.1 Update Changelog e7625e5 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1731";>#1731 from gruntjs/update-options 5d67e34 Fix ci install d13bf88 Switch to Actions 08896ae Update grunt-known-options eee0673 Add note about a breaking change 1b6e288 https://github.com/gruntjs/grunt/compare/v1.4.0...v1.4.1";>https://github.com/gruntjs/grunt/compare/v1.4.0...v1.4.1 v1.4.0 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1728";>#1728 from gruntjs/update-deps-changelog 63b2e89 Update changelog and util dep 106ed17 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1727";>#1727 from gruntjs/update-deps-apr 49de70b Update CLI and nodeunit 47cf8b6 Merge pull request https://github-redirect.dependabot.com/gruntjs/grunt/issues/1722";>#1722 from gruntjs/update-through e86db1c Update deps 4952368 ... (truncated) Changelog Sourced from https://github.com/gruntjs/grunt/blob/main/CHANGELOG";>grunt's changelog. v1.5.3 date: 2022-04-23 changes: - Patch up race condition in symlink copying. v1.5.2 date: 2022-04-12 changes: - Unlink symlinks when copy destination is a symlink. v1.5.1 date: 2022-04-11 changes: - Fixed symlink destination handling. v1.5.0 date: 2022-04-10 changes: - Updated dependencies. - Add symlink handling for copying files. v1.4.1 date: 2021-05-24 changes: - Fix --preload option to be a known option - Switch to GitHub Actions v1.4.0 date: 2021-04-21 changes: - Security fixes in production and dev dependencies - Liftup/Liftoff upgrade breaking change. Update your scripts to use --preload instead of --require. Ref: https://github.com/js-cli/js-liftoff/commit/e7a969d6706e730d90abb4e24d3cb4d3bce06ddb";>https://github.com/js-cli/js-liftoff/commit/e7a969d6706e730d90abb4e24d3cb4d3bce06ddb. v1.3.0 date: 2020-08-18 changes: - Switch to use safeLoad for loading YML files via file.readYAML. - Upgrade legacy-log to ~3.0.0. - Upgrade legacy-util to ~2.0.0. v1.2.1 date: 2020-07-07 changes: - Remove path-is-absolute dependency. (PR: https://github-redirect.dependabot.com/gruntjs/grunt/pull/1715";>gruntjs/grunt#1715) v1.2.0 date: 2020-07-03 changes: - Allow usage of grunt plugins that are located in any location that is visible to Node.js and NPM, instead of node_modules directly inside package that have a dev dependency to these plugins. (PR: https://github-redirect.dependabot.com/gruntjs/grunt/pull/1677";>gruntjs/grunt#1677) - Removed coffeescript from dependencies. To ease transition, if coffeescript is still around, Grunt will attempt to load it. If it is not, and the user loads a CoffeeScript file, Grunt will print a useful error indicating that the coffeescript package should be installed as a dev dependency.
[GitHub] [tomcat-training] dependabot[bot] closed pull request #4: Bump grunt from 1.0.2 to 1.5.2
dependabot[bot] closed pull request #4: Bump grunt from 1.0.2 to 1.5.2 URL: https://github.com/apache/tomcat-training/pull/4 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat-training] branch dependabot/npm_and_yarn/grunt-1.5.3 created (now ee2bd73)
This is an automated email from the ASF dual-hosted git repository. github-bot pushed a change to branch dependabot/npm_and_yarn/grunt-1.5.3 in repository https://gitbox.apache.org/repos/asf/tomcat-training.git at ee2bd73 Bump grunt from 1.0.2 to 1.5.3 No new revisions were added by this update. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat-training] dependabot[bot] commented on pull request #4: Bump grunt from 1.0.2 to 1.5.2
dependabot[bot] commented on PR #4: URL: https://github.com/apache/tomcat-training/pull/4#issuecomment-1137952872 Superseded by #6. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] jfclere commented on pull request #517: Fix BZ 66089
jfclere commented on PR #517: URL: https://github.com/apache/tomcat/pull/517#issuecomment-1138189852 Actually the encrypted keys created by CA.pl can't be read by Tomcat. They need to be converted to PKCS 8 like: openssl pkcs8 -topk8 -in newkey.pem -out newkey.pkcs8.pem I though that worked in the past, am I wrong? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [tomcat] branch 9.0.x updated: Additional fixes for 66076
On 25/05/2022 10:07, Rémy Maucherat wrote: On Tue, May 24, 2022 at 6:46 PM wrote: 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 680db4448d Additional fixes for 66076 680db4448d is described below commit 680db4448d392752fb57b91639e7ab34a3f58105 Author: Mark Thomas AuthorDate: Tue May 24 17:46:20 2022 +0100 Additional fixes for 66076 The vectored IO version of the fix. diff --git a/java/org/apache/tomcat/util/net/SocketWrapperBase.java b/java/org/apache/tomcat/util/net/SocketWrapperBase.java index bcb0119fc6..d95a31a15d 100644 --- a/java/org/apache/tomcat/util/net/SocketWrapperBase.java +++ b/java/org/apache/tomcat/util/net/SocketWrapperBase.java @@ -1036,6 +1036,8 @@ public abstract class SocketWrapperBase { */ protected abstract boolean isInline(); +protected abstract boolean hasOutboundRemaining(); + /** * Process the operation using the connector executor. * @return true if the operation was accepted, false if the executor @@ -1087,7 +1089,7 @@ public abstract class SocketWrapperBase { boolean completion = true; if (state.check != null) { CompletionHandlerCall call = state.check.callHandler(currentState, state.buffers, state.offset, state.length); -if (call == CompletionHandlerCall.CONTINUE) { +if (call == CompletionHandlerCall.CONTINUE || state.hasOutboundRemaining()) { I understand why it's there (the operation will indeed seem complete in that case, but it's not fully complete), but it needs to check state.read then (looping a read operation will most likely not do anything good; maybe it shouldn't happen, but it's a lot better to be safe), so: if (call == CompletionHandlerCall.CONTINUE || (!state.read && state.hasOutboundRemaining())) { Overall the change is more convoluted than I expected, and I would have messed it up without a test case. Thanks for the review. I'd missed that case and I agree bad things would happen if state.hasOutboundRemaining() happened to be true while a read was completing. Mark - 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 (145a073f47 -> a56d50974d)
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 145a073f47 Fix indent new fc194b72d1 Only check state.hasOutboundRemaining() when writes complete. new a56d50974d Refactor to reduce code volume. Thanks to schultz. The 2 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: java/org/apache/tomcat/util/net/AprEndpoint.java | 7 --- java/org/apache/tomcat/util/net/Nio2Endpoint.java | 7 --- java/org/apache/tomcat/util/net/SocketWrapperBase.java | 9 +++-- 3 files changed, 7 insertions(+), 16 deletions(-) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 01/02: Only check state.hasOutboundRemaining() when writes complete.
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 fc194b72d1df42494c34cbc0937a42ad56559148 Author: Mark Thomas AuthorDate: Thu May 26 07:34:58 2022 +0100 Only check state.hasOutboundRemaining() when writes complete. Review from remm --- java/org/apache/tomcat/util/net/SocketWrapperBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/org/apache/tomcat/util/net/SocketWrapperBase.java b/java/org/apache/tomcat/util/net/SocketWrapperBase.java index d95a31a15d..ecfc0b7aff 100644 --- a/java/org/apache/tomcat/util/net/SocketWrapperBase.java +++ b/java/org/apache/tomcat/util/net/SocketWrapperBase.java @@ -1089,7 +1089,7 @@ public abstract class SocketWrapperBase { boolean completion = true; if (state.check != null) { CompletionHandlerCall call = state.check.callHandler(currentState, state.buffers, state.offset, state.length); -if (call == CompletionHandlerCall.CONTINUE || state.hasOutboundRemaining()) { +if (call == CompletionHandlerCall.CONTINUE || (!state.read && state.hasOutboundRemaining())) { complete = false; } else if (call == CompletionHandlerCall.NONE) { completion = false; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 02/02: Refactor to reduce code volume. Thanks to schultz.
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 a56d50974d6cd6af019e09c0f260e76bc0b341b7 Author: Mark Thomas AuthorDate: Thu May 26 07:37:42 2022 +0100 Refactor to reduce code volume. Thanks to schultz. --- java/org/apache/tomcat/util/net/AprEndpoint.java | 7 --- java/org/apache/tomcat/util/net/Nio2Endpoint.java | 7 --- java/org/apache/tomcat/util/net/SocketWrapperBase.java | 7 ++- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java b/java/org/apache/tomcat/util/net/AprEndpoint.java index 20d10efa11..c02e90fc09 100644 --- a/java/org/apache/tomcat/util/net/AprEndpoint.java +++ b/java/org/apache/tomcat/util/net/AprEndpoint.java @@ -2813,13 +2813,6 @@ public class AprEndpoint extends AbstractEndpoint implements SNICallB return inline; } -@Override -protected boolean hasOutboundRemaining() { -// NIO2 never has remaining outbound data when the completion -// handler is called -return false; -} - @Override public void run() { // Perform the IO operation diff --git a/java/org/apache/tomcat/util/net/Nio2Endpoint.java b/java/org/apache/tomcat/util/net/Nio2Endpoint.java index c5b9a395f5..49ee411016 100644 --- a/java/org/apache/tomcat/util/net/Nio2Endpoint.java +++ b/java/org/apache/tomcat/util/net/Nio2Endpoint.java @@ -1021,13 +1021,6 @@ public class Nio2Endpoint extends AbstractJsseEndpoint { */ protected abstract boolean isInline(); -protected abstract boolean hasOutboundRemaining(); +protected boolean hasOutboundRemaining() { +// NIO2 and APR never have remaining outbound data when the +// completion handler is called. NIO needs to override this. +return false; +} + /** * Process the operation using the connector executor. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer
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 4334622e08 Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer 4334622e08 is described below commit 4334622e087468184eef7b520ac5d8e631be2c21 Author: Mark Thomas AuthorDate: Mon May 23 10:17:02 2022 +0100 Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 --- java/org/apache/tomcat/util/net/NioEndpoint.java | 43 -- .../apache/tomcat/util/net/SocketWrapperBase.java | 23 +++- webapps/docs/changelog.xml | 5 +++ 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java index e8348e90f0..d074153bbc 100644 --- a/java/org/apache/tomcat/util/net/NioEndpoint.java +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java @@ -1295,20 +1295,20 @@ public class NioEndpoint extends AbstractJsseEndpoint @Override protected boolean flushNonBlocking() throws IOException { -boolean dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +boolean dataLeft = socketOrNetworkBufferHasDataLeft(); // Write to the socket, if there is anything to write if (dataLeft) { doWrite(false); -dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +dataLeft = socketOrNetworkBufferHasDataLeft(); } if (!dataLeft && !nonBlockingWriteBuffer.isEmpty()) { dataLeft = nonBlockingWriteBuffer.write(this, false); -if (!dataLeft && !socketBufferHandler.isWriteBufferEmpty()) { +if (!dataLeft && socketOrNetworkBufferHasDataLeft()) { doWrite(false); -dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +dataLeft = socketOrNetworkBufferHasDataLeft(); } } @@ -1316,6 +1316,22 @@ public class NioEndpoint extends AbstractJsseEndpoint } +/* + * https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 + * + * When using TLS an additional buffer is used for the encrypted data + * before it is written to the network. It is possible for this network + * output buffer to contain data while the socket write buffer is empty. + * + * For NIO with non-blocking I/O, this case is handling by ensuring that + * flush only returns false (i.e. no data left to flush) if all buffers + * are empty. + */ +private boolean socketOrNetworkBufferHasDataLeft() { +return !socketBufferHandler.isWriteBufferEmpty() || getSocket().getOutboundRemaining() > 0; +} + + @Override protected void doWrite(boolean block, ByteBuffer buffer) throws IOException { int n = 0; @@ -1556,6 +1572,11 @@ public class NioEndpoint extends AbstractJsseEndpoint return inline; } +@Override +protected boolean hasOutboundRemaining() { +return getSocket().getOutboundRemaining() > 0; +} + @Override public void run() { // Perform the IO operation @@ -1588,13 +1609,13 @@ public class NioEndpoint extends AbstractJsseEndpoint } else { boolean doWrite = true; // Write from main buffer first -if (!socketBufferHandler.isWriteBufferEmpty()) { +if (socketOrNetworkBufferHasDataLeft()) { // There is still data inside the main write buffer, it needs to be written first socketBufferHandler.configureWriteBufferForRead(); do { nBytes = getSocket().write(socketBufferHandler.getWriteBuffer()); -} while (!socketBufferHandler.isWriteBufferEmpty() && nBytes > 0); -if (!socketBufferHandler.isWriteBufferEmpty()) { +} while (socketOrNetworkBufferHasDataLeft() && nBytes > 0); +if (socketOrNetworkBufferHasDataLeft()) { doWrite = false; } // Preserve a negative value since it is an error @@ -1615,7 +1636,8 @@ public class NioEndpoint extends AbstractJsseEndpoint
[tomcat] branch 10.0.x updated: Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.0.x by this push: new 71056e7a28 Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer 71056e7a28 is described below commit 71056e7a283d03cdab642593de2b1005ccea98ee Author: Mark Thomas AuthorDate: Mon May 23 10:17:02 2022 +0100 Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 --- java/org/apache/tomcat/util/net/NioEndpoint.java | 43 -- .../apache/tomcat/util/net/SocketWrapperBase.java | 23 +++- webapps/docs/changelog.xml | 5 +++ 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java index 0a832b60b9..05804c4f17 100644 --- a/java/org/apache/tomcat/util/net/NioEndpoint.java +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java @@ -1318,20 +1318,20 @@ public class NioEndpoint extends AbstractJsseEndpoint @Override protected boolean flushNonBlocking() throws IOException { -boolean dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +boolean dataLeft = socketOrNetworkBufferHasDataLeft(); // Write to the socket, if there is anything to write if (dataLeft) { doWrite(false); -dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +dataLeft = socketOrNetworkBufferHasDataLeft(); } if (!dataLeft && !nonBlockingWriteBuffer.isEmpty()) { dataLeft = nonBlockingWriteBuffer.write(this, false); -if (!dataLeft && !socketBufferHandler.isWriteBufferEmpty()) { +if (!dataLeft && socketOrNetworkBufferHasDataLeft()) { doWrite(false); -dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +dataLeft = socketOrNetworkBufferHasDataLeft(); } } @@ -1339,6 +1339,22 @@ public class NioEndpoint extends AbstractJsseEndpoint } +/* + * https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 + * + * When using TLS an additional buffer is used for the encrypted data + * before it is written to the network. It is possible for this network + * output buffer to contain data while the socket write buffer is empty. + * + * For NIO with non-blocking I/O, this case is handling by ensuring that + * flush only returns false (i.e. no data left to flush) if all buffers + * are empty. + */ +private boolean socketOrNetworkBufferHasDataLeft() { +return !socketBufferHandler.isWriteBufferEmpty() || getSocket().getOutboundRemaining() > 0; +} + + @Override protected void doWrite(boolean block, ByteBuffer buffer) throws IOException { int n = 0; @@ -1579,6 +1595,11 @@ public class NioEndpoint extends AbstractJsseEndpoint return inline; } +@Override +protected boolean hasOutboundRemaining() { +return getSocket().getOutboundRemaining() > 0; +} + @Override public void run() { // Perform the IO operation @@ -1611,13 +1632,13 @@ public class NioEndpoint extends AbstractJsseEndpoint } else { boolean doWrite = true; // Write from main buffer first -if (!socketBufferHandler.isWriteBufferEmpty()) { +if (socketOrNetworkBufferHasDataLeft()) { // There is still data inside the main write buffer, it needs to be written first socketBufferHandler.configureWriteBufferForRead(); do { nBytes = getSocket().write(socketBufferHandler.getWriteBuffer()); -} while (!socketBufferHandler.isWriteBufferEmpty() && nBytes > 0); -if (!socketBufferHandler.isWriteBufferEmpty()) { +} while (socketOrNetworkBufferHasDataLeft() && nBytes > 0); +if (socketOrNetworkBufferHasDataLeft()) { doWrite = false; } // Preserve a negative value since it is an error @@ -1638,7 +1659,8 @@ public class NioEndpoint extends AbstractJsseEndpoint
[tomcat] branch 8.5.x updated: Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer
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 bd6cf00963 Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer bd6cf00963 is described below commit bd6cf009630f3ff49056d246413765c2c05cc372 Author: Mark Thomas AuthorDate: Mon May 23 10:17:02 2022 +0100 Fix BZ 66076. Non-blocking flush with TLS+NIO must flush network buffer https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 --- java/org/apache/tomcat/util/net/NioEndpoint.java | 43 -- .../apache/tomcat/util/net/SocketWrapperBase.java | 23 +++- webapps/docs/changelog.xml | 5 +++ 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java b/java/org/apache/tomcat/util/net/NioEndpoint.java index ab9b2552f5..a6eaac0b3a 100644 --- a/java/org/apache/tomcat/util/net/NioEndpoint.java +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java @@ -1245,20 +1245,20 @@ public class NioEndpoint extends AbstractJsseEndpoint @Override protected boolean flushNonBlocking() throws IOException { -boolean dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +boolean dataLeft = socketOrNetworkBufferHasDataLeft(); // Write to the socket, if there is anything to write if (dataLeft) { doWrite(false); -dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +dataLeft = socketOrNetworkBufferHasDataLeft(); } if (!dataLeft && !nonBlockingWriteBuffer.isEmpty()) { dataLeft = nonBlockingWriteBuffer.write(this, false); -if (!dataLeft && !socketBufferHandler.isWriteBufferEmpty()) { +if (!dataLeft && socketOrNetworkBufferHasDataLeft()) { doWrite(false); -dataLeft = !socketBufferHandler.isWriteBufferEmpty(); +dataLeft = socketOrNetworkBufferHasDataLeft(); } } @@ -1266,6 +1266,22 @@ public class NioEndpoint extends AbstractJsseEndpoint } +/* + * https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 + * + * When using TLS an additional buffer is used for the encrypted data + * before it is written to the network. It is possible for this network + * output buffer to contain data while the socket write buffer is empty. + * + * For NIO with non-blocking I/O, this case is handling by ensuring that + * flush only returns false (i.e. no data left to flush) if all buffers + * are empty. + */ +private boolean socketOrNetworkBufferHasDataLeft() { +return !socketBufferHandler.isWriteBufferEmpty() || getSocket().getOutboundRemaining() > 0; +} + + @Override protected void doWrite(boolean block, ByteBuffer buffer) throws IOException { int n = 0; @@ -1510,6 +1526,11 @@ public class NioEndpoint extends AbstractJsseEndpoint return inline; } +@Override +protected boolean hasOutboundRemaining() { +return getSocket().getOutboundRemaining() > 0; +} + @Override public void run() { // Perform the IO operation @@ -1542,13 +1563,13 @@ public class NioEndpoint extends AbstractJsseEndpoint } else { boolean doWrite = true; // Write from main buffer first -if (!socketBufferHandler.isWriteBufferEmpty()) { +if (socketOrNetworkBufferHasDataLeft()) { // There is still data inside the main write buffer, it needs to be written first socketBufferHandler.configureWriteBufferForRead(); do { nBytes = getSocket().write(socketBufferHandler.getWriteBuffer()); -} while (!socketBufferHandler.isWriteBufferEmpty() && nBytes > 0); -if (!socketBufferHandler.isWriteBufferEmpty()) { +} while (socketOrNetworkBufferHasDataLeft() && nBytes > 0); +if (socketOrNetworkBufferHasDataLeft()) { doWrite = false; } // Preserve a negative value since it is an error @@ -1569,7 +1590,8 @@ public class NioEndpoint extends AbstractJsseEndpoint
[Bug 66076] Final block of encrypted response payload not being sent occasionally over TLS
https://bz.apache.org/bugzilla/show_bug.cgi?id=66076 Mark Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #17 from Mark Thomas --- Thanks for testing. Fixed in: - 10.1.x for 10.1.0-M16 onwards - 10.0.x for 10.0.22 onwards - 9.0.x for 9.0.64 onwards - 8.5.x for 8.5.80 onwards -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66056] Enable Tomcat to support variables with spaces when defining environment variables _RUNJAVA and _RUNJDB (Windows)
https://bz.apache.org/bugzilla/show_bug.cgi?id=66056 Mark Thomas changed: What|Removed |Added Status|NEEDINFO|RESOLVED Resolution|--- |WORKSFORME --- Comment #2 from Mark Thomas --- No response to request for further info and I'm unable to trigger issues with the current implementation. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 65975] CLIENT-CERT authentication does not request cert from client and always denies access (401)
https://bz.apache.org/bugzilla/show_bug.cgi?id=65975 Mark Thomas changed: What|Removed |Added Resolution|--- |WORKSFORME Status|NEEDINFO|RESOLVED --- Comment #23 from Mark Thomas --- Requested information has not been provided so I'm closing this issue. If you are able to recreate this issue and can provide the steps to recreate it from a clean install of the latest 9.0.x release, then feel free to re-open this issue and provide the reproduction steps. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org