示例#1
0
        public SipViaHeader CreateViaHeader(IPAddress host, int?port, string transport, string branch)
        {
            Check.Require(host, "host");
            Check.NotNullOrEmpty(transport, "transport");
            Check.NotNullOrEmpty(branch, "branch");

            SipViaHeader h = new SipViaHeader();

            if (branch != null)
            {
                h.Branch = branch;
            }
            h.SentBy    = new System.Net.IPEndPoint(host, port.HasValue ? port.Value : 5060);
            h.Transport = transport;
            return(h);
        }
示例#2
0
        public SipRequest CreateRequest(string method, SipViaHeader viaheader = null)
        {
            if (State < DialogState.Early)
            {
                throw new InvalidOperationException("The dialog is unable to create the request. A dialog in 'NULL' state can not create requests.");
            }

            Check.IsTrue(SipMethods.IsMethod(method), "method argument must be a SIP method");

            var cseqHeader   = _headerFactory.CreateSCeqHeader(method, _localSequenceNr);
            var toAddress    = _addressFactory.CreateAddress(null, _remoteUri);
            var toHeader     = _headerFactory.CreateToHeader(toAddress, _remoteTag);
            var fromAddress  = _addressFactory.CreateAddress(null, _localUri);
            var fromHeader   = _headerFactory.CreateFromHeader(fromAddress, _localTag);
            var callIdheader = _headerFactory.CreateCallIdHeader(_callId);
            var viaHeader    = viaheader ?? _headerFactory.CreateViaHeader(_listeningPoint, SipConstants.Udp, SipUtil.CreateBranch());
            var requestUri   = _remoteUri.Clone();

            var maxForwardsHeader = _headerFactory.CreateMaxForwardsHeader();
            var request           = _messageFactory.CreateRequest(
                requestUri,
                method,
                callIdheader,
                cseqHeader,
                fromHeader,
                toHeader,
                viaHeader,
                maxForwardsHeader);

            foreach (var route in _routeSet)
            {
                request.Routes.Add(new SipRouteHeader()
                {
                    SipUri = route.SipUri, Parameters = route.Parameters
                });
            }

            return(request);
        }
示例#3
0
        protected SipRequest CreateRequest(string method)
        {
            /*create the 'INVITE' message*/
            SipAddressFactory addressFactory = _stack.CreateAddressFactory();
            SipHeaderFactory  headerFactory  = _stack.CreateHeaderFactory();
            SipMessageFactory messageFactory = _stack.CreateMessageFactory();

            SipUri     senderSipUri     = addressFactory.CreateUri(string.Empty, new IPEndPoint(_ipAddress, 12345).ToString());
            SipAddress senderSipAddress = addressFactory.CreateAddress(string.Empty, senderSipUri);

            SipUri     receiverSipUri     = addressFactory.CreateUri(string.Empty, new IPEndPoint(_ipAddress, 23456).ToString());
            SipAddress receiverSipAddress = addressFactory.CreateAddress(string.Empty, senderSipUri);

            SipToHeader     toHeader     = headerFactory.CreateToHeader(receiverSipAddress);
            SipFromHeader   fromHeader   = headerFactory.CreateFromHeader(senderSipAddress, SipUtil.CreateTag());
            SipCSeqHeader   cseqHeader   = headerFactory.CreateSCeqHeader(method, 1);
            SipCallIdHeader callIdheader = headerFactory.CreateCallIdHeader(SipUtil.CreateCallId());
            SipViaHeader    viaHeader    = headerFactory.CreateViaHeader(_ipAddress, 12345, SipConstants.Udp,
                                                                         SipUtil.CreateBranch());
            SipMaxForwardsHeader maxForwardsHeader = headerFactory.CreateMaxForwardsHeader();
            SipRequest           request           = messageFactory.CreateRequest(
                receiverSipUri,
                method,
                callIdheader,
                cseqHeader,
                fromHeader,
                toHeader,
                viaHeader,
                maxForwardsHeader);

            if (method == SipMethods.Invite)
            {
                SipContactHeader contactHeader = headerFactory.CreateContactHeader(senderSipUri);
                request.Contacts.Add(contactHeader);
            }

            return(request);
        }
示例#4
0
        public SipRequest CreateRequest(SipUri requestUri, string method, SipCallIdHeader callId, SipCSeqHeader cSeq, SipFromHeader from, SipToHeader to, SipViaHeader viaHeader, SipMaxForwardsHeader maxForwards)
        {
            Check.Require(requestUri, "requestUri");
            Check.Require(method, "method");
            Check.Require(callId, "callId");
            Check.Require(cSeq, "cseq");
            Check.Require(from, "from");
            Check.Require(to, "to");
            Check.Require(viaHeader, "viaHeader");
            Check.Require(maxForwards, "maxforwards");

            var message = new SipRequest();

            message.RequestLine.Method  = method;
            message.RequestLine.Uri     = requestUri;
            message.RequestLine.Version = SipConstants.SipTwoZeroString;
            message.CallId = callId;
            message.To     = to;
            message.From   = from;
            message.CSeq   = cSeq;
            message.Vias.SetTopMost(viaHeader);
            message.MaxForwards = maxForwards;
            return(message);
        }