Example #1
0
            internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent)
            {
                /* 17.2.1 If an ACK is received while the server transaction is in the
                   "Completed" state, the server transaction MUST transition to the
                   "Confirmed" state. */
                if (requestEvent.Request.RequestLine.Method == SipMethods.Ack)
                {
                    tx.ChangeState(SipInviteServerTransaction.ConfirmedState);
                }
                else
                {
                    tx.SendResponseInternal();
                }

                return new StateResult();
            }
Example #2
0
            internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent)
            {
                /* 17.2.1 If an ACK is received while the server transaction is in the
                 * "Completed" state, the server transaction MUST transition to the
                 * "Confirmed" state. */
                if (requestEvent.Request.RequestLine.Method == SipMethods.Ack)
                {
                    tx.ChangeState(SipInviteServerTransaction.ConfirmedState);
                }
                else
                {
                    tx.SendResponseInternal();
                }

                return(new StateResult());
            }
Example #3
0
            internal override StateResult HandleSendingResponse(SipInviteServerTransaction tx, SipResponse response)
            {
                var stateResult = new StateResult();

                var statusCode = response.StatusLine.StatusCode;

                if (statusCode >= 100 && statusCode < 200)
                {
                    tx.SendResponseInternal(response);
                }
                else if (statusCode >= 200 && statusCode < 300)
                {
                    tx.SendResponseInternal(response);
                    stateResult.Dispose = true;
                }
                else if (statusCode >= 300 && statusCode < 700)
                {
                    tx.SendResponseInternal(response);
                    tx.ChangeState(SipInviteServerTransaction.CompletedState);
                }

                return(stateResult);
            }
Example #4
0
            internal override StateResult HandleSendingResponse(SipInviteServerTransaction tx, SipResponse response)
            {
                var stateResult = new StateResult();

                var statusCode = response.StatusLine.StatusCode;

                if (statusCode >= 100 && statusCode < 200)
                {
                    tx.SendResponseInternal(response);
                }
                else if (statusCode >= 200 && statusCode < 300)
                {
                    tx.SendResponseInternal(response);
                    stateResult.Dispose = true;
                }
                else if (statusCode >= 300 && statusCode < 700)
                {
                    tx.SendResponseInternal(response);
                    tx.ChangeState(SipInviteServerTransaction.CompletedState);
                }

                return stateResult;
            }
Example #5
0
        public ISipServerTransaction CreateServerTransaction(SipRequest request)
        {
            Check.Require(request, "request");
            Check.IsTrue(SipMethods.IsMethod(request.RequestLine.Method), "Request method is not supported");

            ISipServerTransaction tx;

            if (request.RequestLine.Method == SipMethods.Ack)
            {
                throw new ArgumentException("Can not create a transaction for the 'ACK' request");
            }

            ISipListener txListener = _sipListener;

            SipAbstractDialog dialog;
            if (_dialogTable.TryGetValue(GetDialogId(request, true), out dialog))
            {
                txListener = dialog;
            }

            if (request.RequestLine.Method == SipMethods.Invite)
            {
                var istx = new SipInviteServerTransaction(
                    ServerTransactionTable,
                    this,
                    txListener,
                    request,
                    _stack.GetTimerFactory());
                //istx.Start();
                tx = istx;
            }
            else
            {
                var nistx = new SipNonInviteServerTransaction(
                    ServerTransactionTable,
                    request,
                    txListener,
                    this,
                    _stack.GetTimerFactory());
                //nistx.Start();
                tx = nistx;
            }

            return tx;
        }
Example #6
0
 internal abstract void Initialize(SipInviteServerTransaction transaction);
Example #7
0
 internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction,
                                                     SipResponse response)
 {
     //in this state the uas is not suposed to sent anymore
     throw new InvalidOperationException();
 }
Example #8
0
 internal override StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request)
 {
     //absorb ack's
     return new StateResult();
 }
Example #9
0
 internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction,
                                                     SipResponse response)
 {
     throw new InvalidOperationException();
 }
Example #10
0
 internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction,
                                                     SipResponse response)
 {
     //in this state the uas is not suposed to sent anymore
     throw new InvalidOperationException();
 }
Example #11
0
 internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent)
 {
     tx.SendResponseInternal();
     requestEvent.IsSent = true;
     return new StateResult();
 }
Example #12
0
 internal override void Initialize(SipInviteServerTransaction tx)
 {
     tx.SendTryingTimer.Start();
 }
Example #13
0
 internal override void Initialize(SipInviteServerTransaction tx)
 {
     tx.SendTryingTimer.Start();
 }
Example #14
0
 internal override void Initialize(SipInviteServerTransaction tx)
 {
     tx.ReTransmitNonx200FinalResponseTimer.Dispose();
     tx.EndCompletedTimer.Dispose();
     tx.EndConfirmedTimer.Start();
 }
Example #15
0
 public void RetransmitNonx200FinalResponse(SipInviteServerTransaction tx)
 {
     tx.ReTransmitNonx200FinalResponseTimer.Interval =
         Math.Min(2 * tx.ReTransmitNonx200FinalResponseTimer.Interval, SipConstants.T2);
     tx.SendResponseInternal();
 }
Example #16
0
 internal override StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request)
 {
     //absorb ack's
     return(new StateResult());
 }
Example #17
0
        private void SendRinging()
        {
            if (_ringingResponse == null)
            {
                _ringingResponse = _inviteRequest.CreateResponse(SipResponseCodes.x180_Ringing);
                _ringingResponse.To.Tag = SipUtil.CreateTag();
                var contactUri = AddressFactory.CreateUri("", MainForm.SipProvider.ListeningPoint.ToString());
                _ringingResponse.Contacts.Add(HeaderFactory.CreateContactHeader(contactUri));

                _inviteTransaction =
                    (SipInviteServerTransaction)SipProvider.CreateServerTransaction(_inviteRequest);
                _dialog = SipProvider.CreateServerDialog(_inviteTransaction);
                _inviteTransaction.SendResponse(_ringingResponse);
            }
            else
            {
                _inviteTransaction.SendResponse(_ringingResponse);
            }
        }
Example #18
0
 internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction,
                                                     SipResponse response)
 {
     throw new InvalidOperationException();
 }
Example #19
0
 protected override void Given()
 {
     _ctx = new SipInviteServerTransaction(TxTable, Sender.Object, Listener.Object, Request, TimerFactory);
     GivenOverride();
 }
Example #20
0
 public void RetransmitNonx200FinalResponse(SipInviteServerTransaction tx)
 {
     tx.ReTransmitNonx200FinalResponseTimer.Interval =
         Math.Min(2*tx.ReTransmitNonx200FinalResponseTimer.Interval, SipConstants.T2);
     tx.SendResponseInternal();
 }
Example #21
0
 internal abstract void Initialize(SipInviteServerTransaction transaction);
Example #22
0
 internal override void Initialize(SipInviteServerTransaction tx)
 {
     tx.SendTryingTimer.Dispose();
     tx.ReTransmitNonx200FinalResponseTimer.Start();
     tx.EndCompletedTimer.Start();
 }
Example #23
0
 internal abstract StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request);
Example #24
0
 internal abstract StateResult HandleSendingResponse(SipInviteServerTransaction transaction, SipResponse response);
Example #25
0
 internal abstract StateResult HandleSendingResponse(SipInviteServerTransaction transaction, SipResponse response);
Example #26
0
 internal abstract StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request);
Example #27
0
 internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent)
 {
     tx.SendResponseInternal();
     requestEvent.IsSent = true;
     return(new StateResult());
 }