From 35b2fa93fa568060df2031de0a4d6d5252a93ec1 Mon Sep 17 00:00:00 2001 From: Akshat Goel Date: Wed, 12 Oct 2016 04:34:56 +0530 Subject: [PATCH] fix added to fix following crash Fatal Exception: java.lang.IllegalStateException: closed at okhttp3.internal.ws.RealWebSocket.sendMessage(RealWebSocket.java:107) at io.socket.engineio.client.transports.WebSocket$4.call(WebSocket.java:189) at io.socket.engineio.parser.Parser.encodePacket(Parser.java:63) at io.socket.engineio.parser.Parser.encodePacket(Parser.java:42) at io.socket.engineio.client.transports.WebSocket.write(WebSocket.java:184) at io.socket.engineio.client.Transport$3.run(Transport.java:108) at io.socket.thread.EventThread.exec(EventThread.java:55) at io.socket.engineio.client.Transport.send(Transport.java:103) at io.socket.engineio.client.Socket.flush(Socket.java:615) at io.socket.engineio.client.Socket.onDrain(Socket.java:606) at io.socket.engineio.client.Socket.access$1100(Socket.java:31) at io.socket.engineio.client.Socket$6.call(Socket.java:308) at io.socket.emitter.Emitter.emit(Emitter.java:117) at io.socket.engineio.client.transports.WebSocket$3$1.run(WebSocket.java:171) at io.socket.thread.EventThread$2.run(EventThread.java:80) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) --- .../java/io/socket/engineio/client/transports/WebSocket.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/io/socket/engineio/client/transports/WebSocket.java b/src/main/java/io/socket/engineio/client/transports/WebSocket.java index 3447494..22bfee0 100644 --- a/src/main/java/io/socket/engineio/client/transports/WebSocket.java +++ b/src/main/java/io/socket/engineio/client/transports/WebSocket.java @@ -190,6 +190,9 @@ public class WebSocket extends Transport { } else if (packet instanceof byte[]) { self.ws.sendMessage(RequestBody.create(BINARY, (byte[]) packet)); } + } catch (IllegalStateException e) { + logger.fine("websocket closed before we could write"); + doClose(); } catch (IOException e) { logger.fine("websocket closed before onclose event"); doClose();