Improve de-registration checks in socket manager.

pull/1/head
Matthew Chen 7 years ago
parent 6331fbb22a
commit fc4763673f

@ -617,6 +617,8 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
[socketMessage didSucceedWithResponseObject:responseObject]; [socketMessage didSucceedWithResponseObject:responseObject];
} else { } else {
if (responseStatus == 403) { if (responseStatus == 403) {
// This should be redundant with our check for the socket
// failing due to 403, but let's be thorough.
[TSAccountManager.sharedInstance setIsDeregistered:YES]; [TSAccountManager.sharedInstance setIsDeregistered:YES];
} }
@ -672,6 +674,9 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
} }
self.state = SocketManagerStateOpen; self.state = SocketManagerStateOpen;
// If socket opens, we know we're not de-registered.
[TSAccountManager.sharedInstance setIsDeregistered:NO];
} }
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error { - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error {
@ -684,6 +689,13 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
DDLogError(@"Websocket did fail with error: %@", error); DDLogError(@"Websocket did fail with error: %@", error);
if ([error.domain isEqualToString:SRWebSocketErrorDomain] && error.code == 2132) {
NSNumber *_Nullable statusCode = error.userInfo[SRHTTPResponseErrorKey];
if (statusCode.unsignedIntegerValue == 403) {
[TSAccountManager.sharedInstance setIsDeregistered:YES];
}
}
[self handleSocketFailure]; [self handleSocketFailure];
} }
@ -696,6 +708,9 @@ NSString *const kNSNotification_SocketManagerStateDidChange = @"kNSNotification_
return; return;
} }
// If we receive a response, we know we're not de-registered.
[TSAccountManager.sharedInstance setIsDeregistered:NO];
WebSocketResourcesWebSocketMessage *wsMessage; WebSocketResourcesWebSocketMessage *wsMessage;
@try { @try {
wsMessage = [WebSocketResourcesWebSocketMessage parseFromData:data]; wsMessage = [WebSocketResourcesWebSocketMessage parseFromData:data];

Loading…
Cancel
Save