public void CancelNotRequiredCallLegs(CallCancelCause cancelCause) { try { m_commandCancelled = true; FireProxyLogEvent(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.AppServer, SIPMonitorEventTypesEnum.DialPlan, "Cancelling all call legs for ForkCall app.", m_username)); // Cancel all forwarded call legs. if (m_switchCalls.Count > 0) { ISIPClientUserAgent[] inProgressCalls = (from ua in m_switchCalls where !ua.IsUACAnswered select ua).ToArray(); for (int index = 0; index < inProgressCalls.Length; index++) { ISIPClientUserAgent uac = inProgressCalls[index]; uac.Cancel(); } } // Signal any delayed calls that they are no longer required. foreach (SIPCallDescriptor callDescriptor in m_delayedCalls) { callDescriptor.DelayMRE.Set(); } CallLegCompleted(); } catch (Exception excp) { logger.Error("Exception ForkCall CancelAllCallLegs. " + excp); } }
private void UACCallProgress(ISIPClientUserAgent uac, SIPResponse progressResponse) { try { if (m_commandCancelled) { //logger.Debug("Call " + uac.CallDescriptor.Uri + " should not be in a progress state after a cancel. Cancel again."); uac.Cancel(); } else { CallProgress(progressResponse.Status, progressResponse.ReasonPhrase, null, progressResponse.Header.ContentType, progressResponse.Body, uac); } } catch (Exception excp) { logger.Error("Exception ForkCall UACCallProgress. " + excp); } }
private void Uac_CallFailed(ISIPClientUserAgent uac, string errorMessage) { logger.Debug($"{ prefix } Call to { endpoint } failed"); uac.Cancel(); }