Fix socketpollable crashing

This commit is contained in:
Erik 2016-07-27 21:16:48 -04:00
parent 32ba61fb09
commit 637e0bb14c
No known key found for this signature in database
GPG Key ID: 4930B7C5FBC1A69D

View File

@ -24,7 +24,7 @@
import Foundation
public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWebsocket {
public final class SocketEngine : NSObject, NSURLSessionDelegate, SocketEnginePollable, SocketEngineWebsocket {
public let emitQueue = dispatch_queue_create("com.socketio.engineEmitQueue", DISPATCH_QUEUE_SERIAL)
public let handleQueue = dispatch_queue_create("com.socketio.engineHandleQueue", DISPATCH_QUEUE_SERIAL)
public let parseQueue = dispatch_queue_create("com.socketio.engineParseQueue", DISPATCH_QUEUE_SERIAL)
@ -117,6 +117,8 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
super.init()
sessionDelegate = sessionDelegate ?? self
(urlPolling, urlWebSocket) = createURLs()
}
@ -205,9 +207,7 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
}
}
dispatch_async(emitQueue) {
self.doLongPoll(reqPolling)
}
doLongPoll(reqPolling)
}
private func createURLs() -> (NSURL, NSURL) {
@ -456,7 +456,7 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
invalidated = false
session = NSURLSession(configuration: .defaultSessionConfiguration(),
delegate: sessionDelegate,
delegateQueue: NSOperationQueue())
delegateQueue: NSOperationQueue.mainQueue())
sid = ""
waitingForPoll = false
waitingForPost = false
@ -549,3 +549,11 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
}
}
}
extension SocketEngine {
public func URLSession(session: NSURLSession, didBecomeInvalidWithError error: NSError?) {
DefaultSocketLogger.Logger.error("Engine URLSession became invalid", type: "SocketEngine")
didError("Engine URLSession became invalid")
}
}