Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java32
1 files changed, 19 insertions, 13 deletions
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java
index fad67d2721..8a13382865 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java
@@ -427,25 +427,31 @@ public class DoSFilter implements Filter
{
if (accepted)
{
- // Wake up the next highest priority request.
- for (int p = _queues.length - 1; p >= 0; --p)
+ try
{
- AsyncContext asyncContext = _queues[p].poll();
- if (asyncContext != null)
+ // Wake up the next highest priority request.
+ for (int p = _queues.length - 1; p >= 0; --p)
{
- ServletRequest candidate = asyncContext.getRequest();
- Boolean suspended = (Boolean)candidate.getAttribute(_suspended);
- if (suspended == Boolean.TRUE)
+ AsyncContext asyncContext = _queues[p].poll();
+ if (asyncContext != null)
{
- if (LOG.isDebugEnabled())
- LOG.debug("Resuming {}", request);
- candidate.setAttribute(_resumed, Boolean.TRUE);
- asyncContext.dispatch();
- break;
+ ServletRequest candidate = asyncContext.getRequest();
+ Boolean suspended = (Boolean)candidate.getAttribute(_suspended);
+ if (suspended == Boolean.TRUE)
+ {
+ if (LOG.isDebugEnabled())
+ LOG.debug("Resuming {}", request);
+ candidate.setAttribute(_resumed, Boolean.TRUE);
+ asyncContext.dispatch();
+ break;
+ }
}
}
}
- _passes.release();
+ finally
+ {
+ _passes.release();
+ }
}
}
}

Back to the top