It is valid to call startAsync() inside a dispatched request
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 22 Mar 2010 11:50:53 +0000 (11:50 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 22 Mar 2010 11:50:53 +0000 (11:50 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@926042 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/core/AsyncContextImpl.java

index a773078..148aff1 100644 (file)
@@ -243,7 +243,8 @@ public class AsyncContextImpl implements AsyncContext {
     }
 
     public void setStarted(Context context) {
-        if (state.compareAndSet(AsyncState.NOT_STARTED, AsyncState.STARTED)) {
+        if (state.compareAndSet(AsyncState.NOT_STARTED, AsyncState.STARTED) ||
+                state.compareAndSet(AsyncState.DISPATCHED, AsyncState.STARTED)) {
             this.context = context;
         } else {
             throw new IllegalStateException("Start illegal. Invalid state: "+state.get());