diff --git a/Classes/Swift/CallManager.swift b/Classes/Swift/CallManager.swift index 5a8fbcd3a..531efc31a 100644 --- a/Classes/Swift/CallManager.swift +++ b/Classes/Swift/CallManager.swift @@ -44,7 +44,7 @@ import AVFoundation @objc var nextCallIsTransfer: Bool = false var referedFromCall: String? var referedToCall: String? - var endCallkit: Bool = false + var lastRegistrationFailed: Bool = false var globalState : GlobalState = .Off var actionsToPerformOnceWhenCoreIsOn : [(()->Void)] = [] var conference: Conference? @@ -512,9 +512,9 @@ import AVFoundation CallManager.instance().providerDelegate.endCall(uuid: call.value) } - CallManager.instance().endCallkit = true + CallManager.instance().lastRegistrationFailed = true } else { - CallManager.instance().endCallkit = false + CallManager.instance().lastRegistrationFailed = false } } diff --git a/Classes/Swift/ProviderDelegate.swift b/Classes/Swift/ProviderDelegate.swift index e9b70f3a7..3c7205b9e 100644 --- a/Classes/Swift/ProviderDelegate.swift +++ b/Classes/Swift/ProviderDelegate.swift @@ -114,10 +114,15 @@ class ProviderDelegate: NSObject { //CallManager.instance().setHeldOtherCalls(exceptCallid: callId ?? "") provider.reportNewIncomingCall(with: uuid, update: update) { error in if error == nil { - if CallManager.instance().endCallkit { + if CallManager.instance().lastRegistrationFailed { let call = CallManager.instance().lc?.getCallByCallid(callId: callId ?? "") if (call?.state == .PushIncomingReceived) { - try? call?.terminate() + Log.directLog(BCTBX_LOG_MESSAGE, text: "CallKit / reportNewIncomingCall: last registration failed, trying to refresh registers ... context = call with call-id: [\(String(describing: callId))] and UUID: [\(uuid.description)] ") + DispatchQueue.main.async { + CallManager.instance().lc?.accountList.forEach { + $0.refreshRegister() + } + } } } } else {