Skip to content

Commit 6661d56

Browse files
committed
check for real error on disconnect out of Starscream
1 parent 2bfb7ff commit 6661d56

File tree

2 files changed

+8
-14
lines changed

2 files changed

+8
-14
lines changed

Source/PusherWebsocketDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ extension PusherConnection: WebSocketDelegate {
3838
}
3939

4040
// Handle error (if any)
41-
guard let error = error else {
41+
guard let error = error where error.code != Int(WebSocket.CloseCode.Normal.rawValue) else {
4242
return
4343
}
4444

Source/Starscream.swift

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -841,16 +841,13 @@ public class WebSocket : NSObject, NSStreamDelegate {
841841
return
842842
}
843843
if receivedOpcode == .ConnectionClose {
844-
var error: CloseCode?
845-
844+
var code = CloseCode.Normal.rawValue
846845
if payloadLen == 1 {
847-
error = .ProtocolError
846+
code = CloseCode.ProtocolError.rawValue
848847
} else if payloadLen > 1 {
849-
let code = WebSocket.readUint16(buffer, offset: offset)
848+
code = WebSocket.readUint16(buffer, offset: offset)
850849
if code < 1000 || (code > 1003 && code < 1007) || (code > 1011 && code < 3000) {
851-
error = .ProtocolError
852-
} else {
853-
error = CloseCode(rawValue: code)
850+
code = CloseCode.ProtocolError.rawValue
854851
}
855852
offset += 2
856853
}
@@ -860,15 +857,12 @@ public class WebSocket : NSObject, NSStreamDelegate {
860857
let bytes = UnsafePointer<UInt8>((buffer+offset))
861858
let str: NSString? = NSString(data: NSData(bytes: bytes, length: len), encoding: NSUTF8StringEncoding)
862859
if str == nil {
863-
error = .ProtocolError
860+
code = CloseCode.ProtocolError.rawValue
864861
}
865862
}
866863
}
867-
868-
if let code = error?.rawValue where error != .Normal {
869-
doDisconnect(errorWithDetail("connection closed by server", code: code))
870-
writeError(code)
871-
}
864+
doDisconnect(errorWithDetail("connection closed by server", code: code))
865+
writeError(code)
872866
return
873867
}
874868
if isControlFrame && payloadLen > 125 {

0 commit comments

Comments
 (0)