Author: markt
Date: Tue Mar 19 19:58:34 2013
New Revision: 1458484

URL: http://svn.apache.org/r1458484
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54716
Additional fix. Avoid NPE on session de-registration.
Based on a patch by Nick Williams.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/BackgroundProcessManager.java
    tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/BackgroundProcessManager.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/BackgroundProcessManager.java?rev=1458484&r1=1458483&r2=1458484&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/BackgroundProcessManager.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/BackgroundProcessManager.java 
Tue Mar 19 19:58:34 2013
@@ -71,7 +71,7 @@ public class BackgroundProcessManager {
     public void unregister(BackgroundProcess process) {
         synchronized (processesLock) {
             processes.remove(process);
-            if (processes.size() == 0) {
+            if (wsBackgroundThread != null && processes.size() == 0) {
                 wsBackgroundThread.halt();
                 wsBackgroundThread = null;
             }

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1458484&r1=1458483&r2=1458484&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Tue 
Mar 19 19:58:34 2013
@@ -256,6 +256,10 @@ public class WsWebSocketContainer
 
 
     protected void registerSession(Class<?> endpoint, WsSession wsSession) {
+        if (!wsSession.isOpen()) {
+            // The session was closed during onOpen. No need to register it.
+            return;
+        }
         synchronized (endPointSessionMapLock) {
             if (endpointSessionMap.size() == 0) {
                 BackgroundProcessManager.getInstance().register(this);



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

Reply via email to