error on unknown engine messages

This commit is contained in:
Erik 2015-11-19 10:15:01 -05:00
parent 80a734e95f
commit 0470647d87
2 changed files with 42 additions and 34 deletions

View File

@ -121,7 +121,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
stopPolling()
}
private func checkIfMessageIsBase64Binary(var message: String) {
private func checkIfMessageIsBase64Binary(var message: String) -> Bool {
if message.hasPrefix("b4") {
// binary in base64 string
message.removeRange(Range(start: message.startIndex,
@ -131,6 +131,10 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
options: .IgnoreUnknownCharacters) {
client?.parseBinaryData(data)
}
return true
} else {
return false
}
}
@ -385,10 +389,19 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
private func parseEngineMessage(var message: String, fromPolling: Bool) {
DefaultSocketLogger.Logger.log("Got message: %@", type: logType, args: message)
let type = SocketEnginePacketType(rawValue: Int((message["^(\\d)"].groups()?[1]) ?? "") ?? -1) ?? {
self.checkIfMessageIsBase64Binary(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(reader.currentCharacter) ?? -1)
?? handleOther(message)
if fromPolling && type != .Noop {
fixDoubleUTF8(&message)
@ -524,7 +537,8 @@ extension SocketEngine {
private func doLongPoll(req: NSMutableURLRequest) {
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 {
this.handlePollingFailed(err?.localizedDescription ?? "Error")
@ -551,7 +565,6 @@ extension SocketEngine {
}
}
}
}
private func flushWaitingForPost() {
if postWait.count == 0 || !connected {

View File

@ -296,12 +296,7 @@ private extension SocketPacket {
var binary = [NSData]()
for i in 0..<data.count {
if data[i] is NSArray || data[i] is NSDictionary {
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)