diff --git a/src/main/java/org/java_websocket/SSLSocketChannel2.java b/src/main/java/org/java_websocket/SSLSocketChannel2.java index e540612bb..404e2c016 100644 --- a/src/main/java/org/java_websocket/SSLSocketChannel2.java +++ b/src/main/java/org/java_websocket/SSLSocketChannel2.java @@ -308,7 +308,6 @@ public void close() throws IOException { if( socketChannel.isOpen() ) socketChannel.write( wrap( emptybuffer ) );// FIXME what if not all bytes can be written socketChannel.close(); - exec.shutdownNow(); } private boolean isHandShakeComplete() { diff --git a/src/main/java/org/java_websocket/server/DefaultSSLWebSocketServerFactory.java b/src/main/java/org/java_websocket/server/DefaultSSLWebSocketServerFactory.java index b871260f8..32896f9a0 100644 --- a/src/main/java/org/java_websocket/server/DefaultSSLWebSocketServerFactory.java +++ b/src/main/java/org/java_websocket/server/DefaultSSLWebSocketServerFactory.java @@ -48,4 +48,8 @@ public WebSocketImpl createWebSocket( WebSocketAdapter a, Draft d, Socket c ) { public WebSocketImpl createWebSocket( WebSocketAdapter a, List d, Socket s ) { return new WebSocketImpl( a, d ); } + @Override + public void close() { + exec.shutdown(); + } } \ No newline at end of file diff --git a/src/main/java/org/java_websocket/server/DefaultWebSocketServerFactory.java b/src/main/java/org/java_websocket/server/DefaultWebSocketServerFactory.java index 3b89cdc2f..59d0e3963 100644 --- a/src/main/java/org/java_websocket/server/DefaultWebSocketServerFactory.java +++ b/src/main/java/org/java_websocket/server/DefaultWebSocketServerFactory.java @@ -23,4 +23,7 @@ public WebSocketImpl createWebSocket( WebSocketAdapter a, List d, Socket public SocketChannel wrapChannel( SocketChannel channel, SelectionKey key ) { return (SocketChannel) channel; } + @Override + public void close() { + } } \ No newline at end of file diff --git a/src/main/java/org/java_websocket/server/WebSocketServer.java b/src/main/java/org/java_websocket/server/WebSocketServer.java index 12cea2f1d..1af6f0883 100644 --- a/src/main/java/org/java_websocket/server/WebSocketServer.java +++ b/src/main/java/org/java_websocket/server/WebSocketServer.java @@ -215,6 +215,8 @@ public void stop( int timeout ) throws InterruptedException { ws.close( CloseFrame.GOING_AWAY ); } + wsf.close(); + synchronized ( this ) { if( selectorthread != null && selectorthread != Thread.currentThread() ) { selector.wakeup(); @@ -729,5 +731,7 @@ public interface WebSocketServerFactory extends WebSocketFactory { * @return The channel on which the read and write operations will be performed.
*/ public ByteChannel wrapChannel( SocketChannel channel, SelectionKey key ) throws IOException; + + public void close(); } }