From 9f5cb0c6916cefc38f564dada04bfd029d2eade0 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 19 Dec 2022 13:23:56 +1100 Subject: [PATCH] Async not supported without wrappers (#9061) --- .../ee10/servlet/ServletContextRequest.java | 12 ++++- .../jetty/ee10/servlet/ServletHolder.java | 47 ++++--------------- .../jetty/ee10/servlet/AsyncServletTest.java | 2 - 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java index fbf5d3275a5..57d0e9895fd 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java @@ -345,6 +345,7 @@ public class ServletContextRequest extends ContextRequest private String _method; private ServletMultiPartFormData.Parts _parts; private ServletPathMapping _servletPathMapping; + private boolean _asyncSupported = true; public static Session getSession(HttpSession httpSession) { @@ -1362,6 +1363,8 @@ public class ServletContextRequest extends ContextRequest @Override public AsyncContext startAsync() throws IllegalStateException { + if (!isAsyncSupported()) + throw new IllegalStateException("Async Not Supported"); ServletRequestState state = getState(); if (_async == null) _async = new AsyncContextState(state); @@ -1374,6 +1377,8 @@ public class ServletContextRequest extends ContextRequest @Override public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { + if (!isAsyncSupported()) + throw new IllegalStateException("Async Not Supported"); ServletRequestState state = getState(); if (_async == null) _async = new AsyncContextState(state); @@ -1398,7 +1403,12 @@ public class ServletContextRequest extends ContextRequest @Override public boolean isAsyncSupported() { - return true; + return _asyncSupported; + } + + public void setAsyncSupported(boolean asyncSupported) + { + _asyncSupported = asyncSupported; } @Override diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java index 511d8bea509..7b1a797f976 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java @@ -30,7 +30,6 @@ import java.util.Set; import java.util.Stack; import java.util.concurrent.atomic.AtomicLong; -import jakarta.servlet.AsyncContext; import jakarta.servlet.GenericServlet; import jakarta.servlet.MultipartConfigElement; import jakarta.servlet.Servlet; @@ -39,12 +38,9 @@ import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRegistration; import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletRequestWrapper; import jakarta.servlet.ServletResponse; import jakarta.servlet.ServletSecurityElement; import jakarta.servlet.UnavailableException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.ee10.servlet.security.IdentityService; import org.eclipse.jetty.ee10.servlet.security.RunAsToken; @@ -1376,49 +1372,24 @@ public class ServletHolder extends Holder implements Comparable