From cbc59d600453c3c8eb330be700d2d130810d6706 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 19 Mar 2015 14:13:03 -0400 Subject: [PATCH] fix race condition --- SwiftIO/SocketEngine.swift | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/SwiftIO/SocketEngine.swift b/SwiftIO/SocketEngine.swift index d21d2a6..40b9eb9 100644 --- a/SwiftIO/SocketEngine.swift +++ b/SwiftIO/SocketEngine.swift @@ -557,16 +557,22 @@ public class SocketEngine: NSObject, WebSocketDelegate { } public func write(msg:String, withType type:PacketType, withData data:[NSData]?) { - if !self.connected { - return - } - - if self.websocket { - // NSLog("writing ws: \(msg):\(datas)") - self.sendWebSocketMessage(msg, withType: type, datas: data) - } else { - // NSLog("writing poll: \(msg):\(datas)") - self.sendPollMessage(msg, withType: type, datas: data) + dispatch_async(self.emitQueue) {[weak self] in + if self == nil { + return + } + + if !self!.connected { + return + } + + if self!.websocket { + // NSLog("writing ws: \(msg):\(datas)") + self?.sendWebSocketMessage(msg, withType: type, datas: data) + } else { + // NSLog("writing poll: \(msg):\(datas)") + self?.sendPollMessage(msg, withType: type, datas: data) + } } }