From 0f70079382b1e1b50e0f74400c954a1f9af53a77 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 11 Feb 2016 09:36:36 -0500 Subject: [PATCH] fix possible race condition --- Source/SocketEngine.swift | 9 ++++++--- Source/SocketIOClient.swift | 4 +--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Source/SocketEngine.swift b/Source/SocketEngine.swift index 0485b1c..9ba7e36 100644 --- a/Source/SocketEngine.swift +++ b/Source/SocketEngine.swift @@ -202,9 +202,12 @@ public final class SocketEngine: NSObject, SocketEnginePollable, SocketEngineWeb postSendClose(nil, nil, nil) } else { // We need to take special care when we're polling that we send it ASAP - postWait.append(String(SocketEnginePacketType.Close.rawValue)) - let req = createRequestForPostWithPostWait() - doRequest(req, withCallback: postSendClose) + // Also make sure we're on the emitQueue since we're touching postWait + dispatch_sync(emitQueue) { + self.postWait.append(String(SocketEnginePacketType.Close.rawValue)) + let req = self.createRequestForPostWithPostWait() + self.doRequest(req, withCallback: postSendClose) + } } } diff --git a/Source/SocketIOClient.swift b/Source/SocketIOClient.swift index 687a4cb..5523dcb 100644 --- a/Source/SocketIOClient.swift +++ b/Source/SocketIOClient.swift @@ -214,9 +214,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketParsable } func didDisconnect(reason: String) { - guard status != .Closed else { - return - } + guard status != .Closed else { return } DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason)