From f767d8d91056b15a0903d4529d8851288d3009ce Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 19 Dec 2011 15:15:00 +1100 Subject: [PATCH] 367048 improved handleRequest guard for suspended requests --- .../jetty/server/AsyncContinuation.java | 19 +++++++++++++++++++ .../jetty/server/AsyncHttpConnection.java | 7 +++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContinuation.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContinuation.java index 25e94d976ce..f9846745e69 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContinuation.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncContinuation.java @@ -203,6 +203,25 @@ public class AsyncContinuation implements AsyncContext, Continuation } } } + + /* ------------------------------------------------------------ */ + public boolean isDispatchable() + { + synchronized(this) + { + switch(_state) + { + case __REDISPATCH: + case __REDISPATCHED: + case __REDISPATCHING: + case __COMPLETING: + return true; + + default: + return false; + } + } + } /* ------------------------------------------------------------ */ @Override diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncHttpConnection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncHttpConnection.java index 9d79c6cd78f..7546302e697 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncHttpConnection.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncHttpConnection.java @@ -62,8 +62,11 @@ public class AsyncHttpConnection extends AbstractHttpConnection implements Async try { // Handle resumed request - if (_request._async.isAsync() && !_request._async.isComplete()) - handleRequest(); + if (_request._async.isAsync()) + { + if ( _request._async.isDispatchable()) + handleRequest(); + } // else Parse more input else if (!_parser.isComplete() && _parser.parseAvailable()) progress=true;