From 8f6483e9b42e7999fce1069cc6e08f5b0b025aa6 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 3 Feb 2017 16:40:33 -0500 Subject: [PATCH] Fix bug in the busy logic. // FREEBIE --- Signal/src/AppDelegate.m | 4 ++-- Signal/src/call/CallService.swift | 2 +- Signal/src/call/OutboundCallInitiator.swift | 2 +- Signal/src/phone/PhoneManager.h | 2 +- Signal/src/phone/PhoneManager.m | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 52851aa24..7bb92aa96 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -355,7 +355,7 @@ static NSString *const kURLHostVerifyPrefix = @"verify"; return NO; } - if ([Environment getCurrent].phoneManager.hasOngoingCall) { + if ([Environment getCurrent].phoneManager.hasOngoingRedphoneCall) { DDLogWarn(@"%@ ignoring INStartVideoCallIntent due to ongoing RedPhone call.", self.tag); return NO; } @@ -406,7 +406,7 @@ static NSString *const kURLHostVerifyPrefix = @"verify"; return NO; } - if ([Environment getCurrent].phoneManager.hasOngoingCall) { + if ([Environment getCurrent].phoneManager.hasOngoingRedphoneCall) { DDLogWarn(@"%@ ignoring INStartAudioCallIntent due to ongoing RedPhone call.", self.tag); return NO; } diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 593c7bb71..0cf4cb6a5 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -414,7 +414,7 @@ protocol CallServiceObserver: class { Logger.verbose("\(TAG) receivedCallOffer for thread:\(thread)") let newCall = SignalCall.incomingCall(localId: UUID(), remotePhoneNumber: thread.contactIdentifier(), signalingId: callId) - guard call == nil || Environment.getCurrent().phoneManager.hasOngoingCall() else { + guard call == nil && !Environment.getCurrent().phoneManager.hasOngoingRedphoneCall() else { // TODO on iOS10+ we can use CallKit to swap calls rather than just returning busy immediately. Logger.verbose("\(TAG) receivedCallOffer for thread: \(thread) but we're already in call: \(call)") diff --git a/Signal/src/call/OutboundCallInitiator.swift b/Signal/src/call/OutboundCallInitiator.swift index 7b26d79b3..383de4a09 100644 --- a/Signal/src/call/OutboundCallInitiator.swift +++ b/Signal/src/call/OutboundCallInitiator.swift @@ -53,7 +53,7 @@ import Foundation self.contactsUpdater.lookupIdentifier(recipientId, success: { recipient in - guard !Environment.getCurrent().phoneManager.hasOngoingCall() else { + guard !Environment.getCurrent().phoneManager.hasOngoingRedphoneCall() else { Logger.error("\(self.TAG) OutboundCallInitiator aborting due to ongoing RedPhone call.") return } diff --git a/Signal/src/phone/PhoneManager.h b/Signal/src/phone/PhoneManager.h index fb793bc3b..f56725bd0 100644 --- a/Signal/src/phone/PhoneManager.h +++ b/Signal/src/phone/PhoneManager.h @@ -41,7 +41,7 @@ - (void)backgroundTimeExpired; // Returns YES IFF there is an ongoing RedPhone call. -- (BOOL)hasOngoingCall; +- (BOOL)hasOngoingRedphoneCall; - (ObservableValue *)currentCallObservable; diff --git a/Signal/src/phone/PhoneManager.m b/Signal/src/phone/PhoneManager.m index b65a05ce7..f099c59c6 100644 --- a/Signal/src/phone/PhoneManager.m +++ b/Signal/src/phone/PhoneManager.m @@ -93,7 +93,7 @@ int64_t prevSession = lastIncomingSessionId; lastIncomingSessionId = session.sessionId; - if ([currentCallControllerObservable.currentValue callState].futureTermination.isIncomplete || [self hasOngoingWebRTCCall]) { + if ([self hasOngoingRedphoneCall] || [self hasOngoingWebRTCCall]) { if (session.sessionId == prevSession) { Environment.errorNoter(@"Ignoring duplicate incoming call signal.", session, false); return; @@ -139,7 +139,7 @@ incoming:YES]; } -- (BOOL)hasOngoingCall +- (BOOL)hasOngoingRedphoneCall { if (!self.curCallController) { return NO;