Skip to content

Commit 637e0bb

Browse files
committed
Fix socketpollable crashing
1 parent 32ba61f commit 637e0bb

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

Source/SocketEngine.swift

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
import Foundation
2626

27-
public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWebsocket {
27+
public final class SocketEngine : NSObject, NSURLSessionDelegate, SocketEnginePollable, SocketEngineWebsocket {
2828
public let emitQueue = dispatch_queue_create("com.socketio.engineEmitQueue", DISPATCH_QUEUE_SERIAL)
2929
public let handleQueue = dispatch_queue_create("com.socketio.engineHandleQueue", DISPATCH_QUEUE_SERIAL)
3030
public let parseQueue = dispatch_queue_create("com.socketio.engineParseQueue", DISPATCH_QUEUE_SERIAL)
@@ -117,6 +117,8 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
117117

118118
super.init()
119119

120+
sessionDelegate = sessionDelegate ?? self
121+
120122
(urlPolling, urlWebSocket) = createURLs()
121123
}
122124

@@ -205,9 +207,7 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
205207
}
206208
}
207209

208-
dispatch_async(emitQueue) {
209-
self.doLongPoll(reqPolling)
210-
}
210+
doLongPoll(reqPolling)
211211
}
212212

213213
private func createURLs() -> (NSURL, NSURL) {
@@ -456,7 +456,7 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
456456
invalidated = false
457457
session = NSURLSession(configuration: .defaultSessionConfiguration(),
458458
delegate: sessionDelegate,
459-
delegateQueue: NSOperationQueue())
459+
delegateQueue: NSOperationQueue.mainQueue())
460460
sid = ""
461461
waitingForPoll = false
462462
waitingForPost = false
@@ -549,3 +549,11 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
549549
}
550550
}
551551
}
552+
553+
extension SocketEngine {
554+
public func URLSession(session: NSURLSession, didBecomeInvalidWithError error: NSError?) {
555+
DefaultSocketLogger.Logger.error("Engine URLSession became invalid", type: "SocketEngine")
556+
557+
didError("Engine URLSession became invalid")
558+
}
559+
}

0 commit comments

Comments
 (0)