Skip to content

Commit bb6bd2b

Browse files
committed
fix race condition in polling
1 parent 2cc68ae commit bb6bd2b

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

SwiftIO/SocketEngine.swift

+13-6
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
235235
let postData = postStr.dataUsingEncoding(NSUTF8StringEncoding,
236236
allowLossyConversion: false)!
237237

238-
238+
// println("posting: \(postStr)")
239239
req.setValue(String(postData.length), forHTTPHeaderField: "Content-Length")
240240
req.HTTPBody = postData
241241

@@ -406,7 +406,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
406406
}
407407

408408
private func parseEngineMessage(var message:String) {
409-
// println(message!)
409+
// println("Engine got message: \(message)")
410410

411411
var strMessage = RegexMutable(message)
412412

@@ -429,7 +429,10 @@ public class SocketEngine: NSObject, WebSocketDelegate {
429429
if let data = NSData(base64EncodedString: message,
430430
options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) {
431431
// println("sending \(data)")
432-
self.client.parseBinaryData(data)
432+
dispatch_async(self.client.handleQueue) {[weak self] in
433+
self?.client.parseBinaryData(data)
434+
return
435+
}
433436
}
434437

435438
return
@@ -448,9 +451,11 @@ public class SocketEngine: NSObject, WebSocketDelegate {
448451

449452
// Remove message type
450453
message.removeAtIndex(message.startIndex)
451-
// println("sending \(messageString)")
452454

453-
self.client.parseSocketMessage(message)
455+
dispatch_async(self.client.handleQueue) {[weak self] in
456+
self?.client.parseSocketMessage(message)
457+
return
458+
}
454459
}
455460

456461
private func probeWebSocket() {
@@ -512,7 +517,9 @@ public class SocketEngine: NSObject, WebSocketDelegate {
512517
}
513518
}
514519

515-
self.flushWaitingForPost()
520+
if !self.waitingForPost {
521+
self.flushWaitingForPost()
522+
}
516523
}
517524

518525
private func sendWebSocketMessage(str:String, withType type:PacketType, datas:[NSData]? = nil) {

0 commit comments

Comments
 (0)