error on unknown engine messages
This commit is contained in:
parent
80a734e95f
commit
0470647d87
@ -121,7 +121,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
|
|||||||
stopPolling()
|
stopPolling()
|
||||||
}
|
}
|
||||||
|
|
||||||
private func checkIfMessageIsBase64Binary(var message: String) {
|
private func checkIfMessageIsBase64Binary(var message: String) -> Bool {
|
||||||
if message.hasPrefix("b4") {
|
if message.hasPrefix("b4") {
|
||||||
// binary in base64 string
|
// binary in base64 string
|
||||||
message.removeRange(Range(start: message.startIndex,
|
message.removeRange(Range(start: message.startIndex,
|
||||||
@ -131,6 +131,10 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
|
|||||||
options: .IgnoreUnknownCharacters) {
|
options: .IgnoreUnknownCharacters) {
|
||||||
client?.parseBinaryData(data)
|
client?.parseBinaryData(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -384,11 +388,20 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
|
|||||||
|
|
||||||
private func parseEngineMessage(var message: String, fromPolling: Bool) {
|
private func parseEngineMessage(var message: String, fromPolling: Bool) {
|
||||||
DefaultSocketLogger.Logger.log("Got message: %@", type: logType, args: message)
|
DefaultSocketLogger.Logger.log("Got message: %@", type: logType, args: message)
|
||||||
|
|
||||||
|
func handleOther(msg: String) -> SocketEnginePacketType {
|
||||||
|
if checkIfMessageIsBase64Binary(msg) {
|
||||||
|
return .Noop
|
||||||
|
} else {
|
||||||
|
DefaultSocketLogger.Logger.error("Got message: %@", type: logType, args: msg)
|
||||||
|
return .Close
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let reader = SocketStringReader(message: message)
|
||||||
|
|
||||||
let type = SocketEnginePacketType(rawValue: Int((message["^(\\d)"].groups()?[1]) ?? "") ?? -1) ?? {
|
let type = SocketEnginePacketType(rawValue: Int(reader.currentCharacter) ?? -1)
|
||||||
self.checkIfMessageIsBase64Binary(message)
|
?? handleOther(message)
|
||||||
return .Noop
|
|
||||||
}()
|
|
||||||
|
|
||||||
if fromPolling && type != .Noop {
|
if fromPolling && type != .Noop {
|
||||||
fixDoubleUTF8(&message)
|
fixDoubleUTF8(&message)
|
||||||
@ -524,32 +537,32 @@ extension SocketEngine {
|
|||||||
|
|
||||||
private func doLongPoll(req: NSMutableURLRequest) {
|
private func doLongPoll(req: NSMutableURLRequest) {
|
||||||
doRequest(req) {[weak self] data, res, err in
|
doRequest(req) {[weak self] data, res, err in
|
||||||
if let this = self {
|
guard let this = self else {return}
|
||||||
if err != nil || data == nil {
|
|
||||||
if this.polling {
|
if err != nil || data == nil {
|
||||||
this.handlePollingFailed(err?.localizedDescription ?? "Error")
|
if this.polling {
|
||||||
} else {
|
this.handlePollingFailed(err?.localizedDescription ?? "Error")
|
||||||
DefaultSocketLogger.Logger.error(err?.localizedDescription ?? "Error", type: this.logType)
|
} else {
|
||||||
}
|
DefaultSocketLogger.Logger.error(err?.localizedDescription ?? "Error", type: this.logType)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
return
|
||||||
DefaultSocketLogger.Logger.log("Got polling response", type: this.logType)
|
}
|
||||||
|
|
||||||
if let str = NSString(data: data!, encoding: NSUTF8StringEncoding) as? String {
|
DefaultSocketLogger.Logger.log("Got polling response", type: this.logType)
|
||||||
dispatch_async(this.parseQueue) {[weak this] in
|
|
||||||
this?.parsePollingMessage(str)
|
if let str = NSString(data: data!, encoding: NSUTF8StringEncoding) as? String {
|
||||||
}
|
dispatch_async(this.parseQueue) {[weak this] in
|
||||||
}
|
this?.parsePollingMessage(str)
|
||||||
|
|
||||||
this.waitingForPoll = false
|
|
||||||
|
|
||||||
if this.fastUpgrade {
|
|
||||||
this.doFastUpgrade()
|
|
||||||
} else if !this.closed && this.polling {
|
|
||||||
this.doPoll()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.waitingForPoll = false
|
||||||
|
|
||||||
|
if this.fastUpgrade {
|
||||||
|
this.doFastUpgrade()
|
||||||
|
} else if !this.closed && this.polling {
|
||||||
|
this.doPoll()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -296,12 +296,7 @@ private extension SocketPacket {
|
|||||||
var binary = [NSData]()
|
var binary = [NSData]()
|
||||||
|
|
||||||
for i in 0..<data.count {
|
for i in 0..<data.count {
|
||||||
if data[i] is NSArray || data[i] is NSDictionary {
|
data[i] = shred(data[i], binary: &binary)
|
||||||
data[i] = shred(data[i], binary: &binary)
|
|
||||||
} else if let bin = data[i] as? NSData {
|
|
||||||
data[i] = ["_placeholder": true, "num": binary.count]
|
|
||||||
binary.append(bin)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (data, binary)
|
return (data, binary)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user