Author: sshafroi
Date: 2008-11-12 11:06:03 +0100 (Wed, 12 Nov 2008)
New Revision: 6925
Modified:
trunk/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
Log:
The request stack in SiteLocatorFilter was not protected with a try finally
stack.pop. This would when things goes wrong further down the track, lead to a
memory leak, and a user that will be locked out, until he gets a new session or
server is restarted.
Modified:
trunk/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
===================================================================
--- trunk/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
2008-11-12 09:38:08 UTC (rev 6924)
+++ trunk/war/src/main/java/no/sesat/search/http/filters/SiteLocatorFilter.java
2008-11-12 10:06:03 UTC (rev 6925)
@@ -405,28 +405,31 @@
((HttpServletResponse)
response).sendError(HttpServletResponse.SC_CONFLICT);
}
} else {
+ long start = System.currentTimeMillis();
stack.push(request);
-
- long start = System.currentTimeMillis();
synchronized (session) {
- long timeLeft = WAIT_TIME - (System.currentTimeMillis() -
start);
- while (stack.peek() != request && timeLeft > 0) {
- try {
- session.wait(timeLeft);
- timeLeft = WAIT_TIME - (System.currentTimeMillis()
- start);
- } catch (InterruptedException e) {
- LOG.error(e);
- timeLeft = -1;
+ try {
+ long timeLeft = WAIT_TIME -
(System.currentTimeMillis() - start);
+ while (stack.peek() != request && timeLeft > 0) {
+ try {
+ session.wait(timeLeft);
+ timeLeft = WAIT_TIME -
(System.currentTimeMillis() - start);
+ } catch (InterruptedException e) {
+ LOG.error(e);
+ timeLeft = -1;
+ }
}
+ if (timeLeft >= 0) {
+ chain.doFilter(request, response);
+ } else {
+ LOG.warn(" -- response 409 (Timeout: Waited " +
(WAIT_TIME - timeLeft) + " ms. )");
+ ((HttpServletResponse)
response).sendError(HttpServletResponse.SC_CONFLICT);
+ }
}
- if (timeLeft >= 0) {
- chain.doFilter(request, response);
- } else {
- LOG.warn(" -- response 409 (Timeout: Waited " +
(WAIT_TIME - timeLeft) + " ms. )");
- ((HttpServletResponse)
response).sendError(HttpServletResponse.SC_CONFLICT);
+ finally {
+ stack.pop();
+ session.notifyAll();
}
- stack.pop();
- session.notifyAll();
}
}
} else {
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits