Skip to content

Commit 89ab458

Browse files
committed
Merge branch 'development'
* development: Refactor engine. Fix infinite recursion in configuration Don't send whole packet to handleConnect
2 parents e3c8cc7 + bd7f943 commit 89ab458

File tree

3 files changed

+34
-32
lines changed

3 files changed

+34
-32
lines changed

Source/SocketEngine.swift

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -359,36 +359,38 @@ public final class SocketEngine : NSObject, NSURLSessionDelegate, SocketEnginePo
359359
private func handleOpen(openData: String) {
360360
do {
361361
let json = try openData.toNSDictionary()
362+
guard let sid = json[sid] as? String else {
363+
client?.engineDidError("Open packet contained no sid")
364+
return
365+
}
362366

363-
if let sid = json["sid"] as? String {
364-
let upgradeWs: Bool
365-
366-
self.sid = sid
367-
connected = true
368-
369-
if let upgrades = json["upgrades"] as? [String] {
370-
upgradeWs = upgrades.contains("websocket")
371-
} else {
372-
upgradeWs = false
373-
}
374-
375-
if let pingInterval = json["pingInterval"] as? Double, pingTimeout = json["pingTimeout"] as? Double {
376-
self.pingInterval = pingInterval / 1000.0
377-
self.pingTimeout = pingTimeout / 1000.0
378-
}
379-
380-
if !forcePolling && !forceWebsockets && upgradeWs {
381-
createWebsocketAndConnect()
382-
}
383-
384-
sendPing()
385-
386-
if !forceWebsockets {
387-
doPoll()
388-
}
389-
390-
client?.engineDidOpen("Connect")
367+
let upgradeWs: Bool
368+
369+
self.sid = sid
370+
connected = true
371+
372+
if let upgrades = json["upgrades"] as? [String] {
373+
upgradeWs = upgrades.contains("websocket")
374+
} else {
375+
upgradeWs = false
376+
}
377+
378+
if let pingInterval = json["pingInterval"] as? Double, pingTimeout = json["pingTimeout"] as? Double {
379+
self.pingInterval = pingInterval / 1000.0
380+
self.pingTimeout = pingTimeout / 1000.0
391381
}
382+
383+
if !forcePolling && !forceWebsockets && upgradeWs {
384+
createWebsocketAndConnect()
385+
}
386+
387+
sendPing()
388+
389+
if !forceWebsockets {
390+
doPoll()
391+
}
392+
393+
client?.engineDidOpen("Connect")
392394
} catch {
393395
didError("Error parsing open packet")
394396
}

Source/SocketIOClientConfiguration.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public struct SocketIOClientConfiguration : ArrayLiteralConvertible, CollectionT
9797

9898
@warn_unused_result
9999
public func prefixThrough(position: Index) -> SubSequence {
100-
return prefixThrough(position)
100+
return backingArray.prefixThrough(position)
101101
}
102102

103103
@warn_unused_result

Source/SocketParsable.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ extension SocketParsable {
3232
return nsp == self.nsp
3333
}
3434

35-
private func handleConnect(p: SocketPacket) {
36-
if p.nsp == "/" && nsp != "/" {
35+
private func handleConnect(packetNamespace: String) {
36+
if packetNamespace == "/" && nsp != "/" {
3737
joinNamespace(nsp)
3838
} else {
3939
didConnect()
@@ -51,7 +51,7 @@ extension SocketParsable {
5151
case .BinaryAck where isCorrectNamespace(pack.nsp):
5252
waitingPackets.append(pack)
5353
case .Connect:
54-
handleConnect(pack)
54+
handleConnect(pack.nsp)
5555
case .Disconnect:
5656
didDisconnect("Got Disconnect")
5757
case .Error:

0 commit comments

Comments
 (0)