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