This is an automated email from the ASF dual-hosted git repository. markt-asf pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 7883f4f91ef14e80865c6c6304709f4d2f0d9ecc Author: Mark Thomas <[email protected]> AuthorDate: Fri Nov 6 20:54:59 2026 +0000 Fix backport --- java/org/apache/coyote/AbstractProcessor.java | 8 ++++++-- java/org/apache/coyote/AbstractProcessorLight.java | 4 +++- java/org/apache/coyote/AsyncStateMachine.java | 3 ++- .../connector/TestCoyoteAdapterAsyncErrorState.java | 18 +++++++++--------- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/java/org/apache/coyote/AbstractProcessor.java b/java/org/apache/coyote/AbstractProcessor.java index cf63ae923a..7b3a0527db 100644 --- a/java/org/apache/coyote/AbstractProcessor.java +++ b/java/org/apache/coyote/AbstractProcessor.java @@ -224,7 +224,7 @@ public abstract class AbstractProcessor extends AbstractProcessorLight implement @Override - public SocketState asyncPostProcess() { + public SocketState asyncPostProcess() throws IOException { return asyncStateMachine.asyncPostProcess(); } @@ -647,7 +647,11 @@ public abstract class AbstractProcessor extends AbstractProcessorLight implement break; } case ASYNC_POST_PROCESS: { - asyncStateMachine.asyncPostProcess(); + try { + asyncStateMachine.asyncPostProcess(); + } catch (IOException ioe) { + handleIOException(ioe); + } break; } diff --git a/java/org/apache/coyote/AbstractProcessorLight.java b/java/org/apache/coyote/AbstractProcessorLight.java index c83e9db48e..b3e53a13c2 100644 --- a/java/org/apache/coyote/AbstractProcessorLight.java +++ b/java/org/apache/coyote/AbstractProcessorLight.java @@ -220,8 +220,10 @@ public abstract class AbstractProcessorLight implements Processor { * Calls the post process of the async state machine. * * @return The state the caller should put the socket in when this method returns + * + * @throws IOException If an I/O error occurs during the processing of the request */ - protected abstract SocketState asyncPostProcess(); + protected abstract SocketState asyncPostProcess() throws IOException; /** * Returns the logger associated with this processor type. diff --git a/java/org/apache/coyote/AsyncStateMachine.java b/java/org/apache/coyote/AsyncStateMachine.java index e430df62a0..3d9c50170f 100644 --- a/java/org/apache/coyote/AsyncStateMachine.java +++ b/java/org/apache/coyote/AsyncStateMachine.java @@ -16,6 +16,7 @@ */ package org.apache.coyote; +import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.concurrent.atomic.AtomicLong; @@ -285,7 +286,7 @@ class AsyncStateMachine { * Async has been processed. Whether or not to enter a long poll depends on current state. For example, as per * SRV.2.3.3.3 can now process calls to complete() or dispatch(). */ - synchronized SocketState asyncPostProcess() { + synchronized SocketState asyncPostProcess() throws IOException { if (state == AsyncState.COMPLETE_PENDING) { clearNonBlockingListeners(); updateState(AsyncState.COMPLETING); diff --git a/test/org/apache/catalina/connector/TestCoyoteAdapterAsyncErrorState.java b/test/org/apache/catalina/connector/TestCoyoteAdapterAsyncErrorState.java index 89de0136a8..c2fe9caecc 100644 --- a/test/org/apache/catalina/connector/TestCoyoteAdapterAsyncErrorState.java +++ b/test/org/apache/catalina/connector/TestCoyoteAdapterAsyncErrorState.java @@ -26,14 +26,14 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.AsyncEvent; -import jakarta.servlet.AsyncListener; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.AsyncContext; +import javax.servlet.AsyncEvent; +import javax.servlet.AsyncListener; +import javax.servlet.DispatcherType; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.junit.Assert; import org.junit.Test; @@ -369,7 +369,7 @@ public class TestCoyoteAdapterAsyncErrorState extends TomcatBaseTest { } catch (IOException ioe) { // Connection reset or timeout. Whatever was received is returned. } - return baos.toString(StandardCharsets.ISO_8859_1); + return baos.toString(StandardCharsets.ISO_8859_1.name()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
