/// <summary> /// Cancels this transaction stopping any further processing or transmission of a previously /// generated final response. /// </summary> /// <returns>A socket error with the result of the cancel.</returns> public void CancelCall() { try { if (TransactionState == SIPTransactionStatesEnum.Calling || TransactionState == SIPTransactionStatesEnum.Trying || TransactionState == SIPTransactionStatesEnum.Proceeding) { base.UpdateTransactionState(SIPTransactionStatesEnum.Cancelled); UASInviteTransactionCancelled?.Invoke(this); SIPResponse cancelResponse = SIPResponse.GetResponse(TransactionRequest, SIPResponseStatusCodesEnum.RequestTerminated, null); cancelResponse.Header.To.ToTag = LocalTag; base.SendFinalResponse(cancelResponse); } else { logger.LogWarning("A request was made to cancel transaction " + TransactionId + " that was not in the calling, trying or proceeding states, state=" + TransactionState + "."); } } catch (Exception excp) { logger.LogError("Exception UASInviteTransaction CancelCall. " + excp.Message); throw; } }
public void CancelCall() { try { if (TransactionState == SIPTransactionStatesEnum.Calling || TransactionState == SIPTransactionStatesEnum.Trying || TransactionState == SIPTransactionStatesEnum.Proceeding) { base.Cancel(); SIPResponse cancelResponse = SIPTransport.GetResponse(TransactionRequest, SIPResponseStatusCodesEnum.RequestTerminated, null); SendFinalResponse(cancelResponse); UASInviteTransactionCancelled?.Invoke(this); } else { logger.Warn("A request was made to cancel transaction " + TransactionId + " that was not in the calling, trying or proceeding states, state=" + TransactionState + "."); } //if (CDR != null) { // CDR.Cancelled(); //} } catch (Exception excp) { logger.Error("Exception UASInviteTransaction CancelCall. " + excp.Message); throw; } }