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 417eb04 Differentiate between error conditions and clean shutdown. 417eb04 is described below commit 417eb04be86649470fa7985b65cb5ece531d6d54 Author: Mark Thomas <ma...@apache.org> AuthorDate: Thu Mar 5 13:36:50 2020 +0000 Differentiate between error conditions and clean shutdown. Allow an async request to complete cleanly if the Connector is paused before complete() is called on a Container thread. --- java/org/apache/coyote/AbstractProcessorLight.java | 2 +- java/org/apache/coyote/ajp/AjpProcessor.java | 6 +++++- java/org/apache/coyote/http11/Http11Processor.java | 4 ++-- webapps/docs/changelog.xml | 4 ++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/java/org/apache/coyote/AbstractProcessorLight.java b/java/org/apache/coyote/AbstractProcessorLight.java index b26b41f..709530d 100644 --- a/java/org/apache/coyote/AbstractProcessorLight.java +++ b/java/org/apache/coyote/AbstractProcessorLight.java @@ -77,7 +77,7 @@ public abstract class AbstractProcessorLight implements Processor { "], State out: [" + state + "]"); } - if (state != SocketState.CLOSED && isAsync()) { + if (isAsync()) { state = asyncPostProcess(); if (getLog().isDebugEnabled()) { getLog().debug("Socket: [" + socketWrapper + diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java index 6109719..d76fdcc 100644 --- a/java/org/apache/coyote/ajp/AjpProcessor.java +++ b/java/org/apache/coyote/ajp/AjpProcessor.java @@ -419,7 +419,11 @@ public class AjpProcessor extends AbstractProcessor { socketWrapper.setReadTimeout(keepAliveTimeout); } recycle(); - return SocketState.OPEN; + if (endpoint.isPaused()) { + return SocketState.CLOSED; + } else { + return SocketState.OPEN; + } } diff --git a/java/org/apache/coyote/http11/Http11Processor.java b/java/org/apache/coyote/http11/Http11Processor.java index 763ac25..2fa81be 100644 --- a/java/org/apache/coyote/http11/Http11Processor.java +++ b/java/org/apache/coyote/http11/Http11Processor.java @@ -680,7 +680,7 @@ public class Http11Processor extends AbstractProcessor { rp.setStage(org.apache.coyote.Constants.STAGE_ENDED); - if (getErrorState().isError() || endpoint.isPaused()) { + if (getErrorState().isError() || (endpoint.isPaused() && !isAsync())) { return SocketState.CLOSED; } else if (isAsync()) { return SocketState.LONG; @@ -1282,7 +1282,7 @@ public class Http11Processor extends AbstractProcessor { @Override protected SocketState dispatchEndRequest() { - if (!keepAlive) { + if (!keepAlive || endpoint.isPaused()) { return SocketState.CLOSED; } else { endRequest(); diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 7176753..e9a5041 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -139,6 +139,10 @@ <code>setEnableSessionCreation</code> for <code>OpenSSLEngine</code>. Pull request provided by Alexander Scheel. (markt) </fix> + <fix> + Allow async requests to complete cleanly when the Connector is paused + before <code>complete()</code> is called on a container thread. (markt) + </fix> </changelog> </subsection> <subsection name="Jasper"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org