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; } }
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; } }