Ejemplo n.º 1
0
        private void OnRequest(object sender, SipRequestEventArgs args)
        {
            SipRequest request = args.Request;

            switch (request["Test"].Text)
            {
            case "OK":

                args.Response = request.CreateResponse(SipStatus.OK, null);
                break;

            case "Error":

                args.Response = request.CreateResponse(SipStatus.ServerError, null);
                break;

            default:

                args.Response = request.CreateResponse(SipStatus.NotImplemented, null);
                break;
            }
        }
Ejemplo n.º 2
0
        private void OnRequest(object sender, SipRequestEventArgs args)
        {
            SipResponse response;

            lock (syncLock)
                requestArgs.Add(args);

            switch (serverOp)
            {
            case ServerOp.Abort:

                args.Transaction.Abort();
                break;

            case ServerOp.OK:

                response = args.Request.CreateResponse(SipStatus.OK, null);
                if (args.Request.Contents != null)
                {
                    response.Contents = new byte[args.Request.ContentLength];
                    Array.Copy(args.Request.Contents, response.Contents, args.Request.ContentLength);
                }

                args.Transaction.SendResponse(response);
                break;

            case ServerOp.ProvisionalOK:

                args.Transaction.SendResponse(args.Request.CreateResponse(SipStatus.Trying, null));
                args.Transaction.SendResponse(args.Request.CreateResponse(SipStatus.OK, null));
                break;

            case ServerOp.ProvisionalProvisionalOK:

                response = args.Request.CreateResponse(SipStatus.Trying, null);
                response.AddHeader("Test", "0");
                args.Transaction.SendResponse(response);
                Thread.Sleep(50);

                response = args.Request.CreateResponse(SipStatus.Trying, null);
                response.AddHeader("Test", "1");
                args.Transaction.SendResponse(response);
                Thread.Sleep(50);

                response = args.Request.CreateResponse(SipStatus.OK, null);
                response.AddHeader("Test", "2");
                args.Transaction.SendResponse(response);
                Thread.Sleep(50);

                break;

            case ServerOp.Error:

                args.Transaction.SendResponse(args.Request.CreateResponse(SipStatus.NotImplemented, null));
                break;

            case ServerOp.Timeout:

                Thread.Sleep(500 * 64 + 1000);         // Wait 1 second longer than T1
                break;
            }
        }