Author: markt
Date: Wed Mar 25 18:57:43 2009
New Revision: 758407

URL: http://svn.apache.org/viewvc?rev=758407&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46875
Add try/catch to session access in case session has been invalidated

Modified:
    
tomcat/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java

Modified: 
tomcat/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java?rev=758407&r1=758406&r2=758407&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java 
(original)
+++ 
tomcat/trunk/java/org/apache/catalina/valves/CometConnectionManagerValve.java 
Wed Mar 25 18:57:43 2009
@@ -312,8 +312,14 @@
                 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 @@
                                             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
+                                    }
                                 }
                             }
                         }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to