From a692031ca7b75d3af816191eced7d2d66b0be170 Mon Sep 17 00:00:00 2001 From: markt Date: Wed, 25 Mar 2009 18:57:43 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46875 Add try/catch to session access in case session has been invalidated git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@758407 13f79535-47bb-0310-9956-ffa450edef68 --- .../valves/CometConnectionManagerValve.java | 29 +++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/java/org/apache/catalina/valves/CometConnectionManagerValve.java b/java/org/apache/catalina/valves/CometConnectionManagerValve.java index e277a3099..c26d4e413 100644 --- a/java/org/apache/catalina/valves/CometConnectionManagerValve.java +++ b/java/org/apache/catalina/valves/CometConnectionManagerValve.java @@ -312,8 +312,14 @@ public class CometConnectionManagerValve HttpSession session = request.getSession(false); if (session != null) { synchronized (session) { - Request[] reqs = (Request[]) - session.getAttribute(cometRequestsAttribute); + Request[] reqs = null; + try { + reqs = (Request[]) + session.getAttribute(cometRequestsAttribute); + } catch (IllegalStateException ise) { + // Ignore - session has been invalidated + // Listener will have cleaned up + } if (reqs != null) { boolean found = false; for (int i = 0; !found && (i < reqs.length); i++) { @@ -329,11 +335,22 @@ public class CometConnectionManagerValve newConnectionInfos[pos++] = reqs[i]; } } - session.setAttribute(cometRequestsAttribute, - newConnectionInfos); + try { + session.setAttribute( + cometRequestsAttribute, + newConnectionInfos); + } catch (IllegalStateException ise) { + // Ignore - session has been invalidated + // Listener will have cleaned up + } } else { - session.removeAttribute( - cometRequestsAttribute); + try { + session.removeAttribute( + cometRequestsAttribute); + } catch (IllegalStateException ise) { + // Ignore - session has been invalidated + // Listener will have cleaned up + } } } } -- 2.11.0