From 23605d2b74d4888ab086bf97ef72fd24879cd1fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=B0=E5=B9=B3=E7=BA=BF?= <22250530@qq.com> Date: Wed, 23 Sep 2015 17:49:05 +0800 Subject: [PATCH] --- .../redkale/net/http/WebSocketRunner.java | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/com/wentch/redkale/net/http/WebSocketRunner.java b/src/com/wentch/redkale/net/http/WebSocketRunner.java index 082c88869..6acd29a0d 100644 --- a/src/com/wentch/redkale/net/http/WebSocketRunner.java +++ b/src/com/wentch/redkale/net/http/WebSocketRunner.java @@ -228,23 +228,26 @@ public class WebSocketRunner implements Runnable { } } - public synchronized void closeRunner() { + public void closeRunner() { if (closed) return; - closed = true; - try { - channel.close(); - } catch (Throwable t) { + synchronized (this) { + if (closed) return; + closed = true; + try { + channel.close(); + } catch (Throwable t) { + } + context.offerBuffer(readBuffer); + context.offerBuffer(writeBuffer); + readBuffer = null; + writeBuffer = null; + engine.remove(webSocket); + if (webSocket.node != null) { + WebSocketGroup group = webSocket.getWebSocketGroup(); + if (group == null || group.isEmpty()) webSocket.node.disconnect(webSocket.groupid, webSocket.engine.getEngineid()); + } + webSocket.onClose(0, null); } - context.offerBuffer(readBuffer); - context.offerBuffer(writeBuffer); - readBuffer = null; - writeBuffer = null; - engine.remove(webSocket); - if (webSocket.node != null) { - WebSocketGroup group = webSocket.getWebSocketGroup(); - if (group == null || group.isEmpty()) webSocket.node.disconnect(webSocket.groupid, webSocket.engine.getEngineid()); - } - webSocket.onClose(0, null); } private static final class Masker {