Exemplo n.º 1
0
        /// <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;
            }
        }
Exemplo n.º 2
0
        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;
            }
        }