ParseSIPMessage() public static method

public static ParseSIPMessage ( byte buffer, SIPEndPoint localSIPEndPoint, SIPEndPoint remoteSIPEndPoint ) : SIPMessage
buffer byte
localSIPEndPoint SIPEndPoint
remoteSIPEndPoint SIPEndPoint
return SIPMessage
Example #1
0
            public void ParseAsteriskOKUnitTest()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg =
                    "SIP/2.0 200 OK" + m_CRLF +
                    "Via: SIP/2.0/UDP 213.168.225.135:5060;branch=z9hG4bKT36BdhXPlT5cqPFQQr81yMmZ37U=" + m_CRLF +
                    "Via: SIP/2.0/UDP 192.168.1.2:5065;received=220.240.255.198:64216;branch=z9hG4bK7D8B6549580844AEA104BD4A837049DD" + m_CRLF +
                    "From: bluesipd <sip:bluesipd@bluesipd:5065>;tag=630217013" + m_CRLF +
                    "To: <sip:303@bluesipd>;tag=as46f418e9" + m_CRLF +
                    "Call-ID: [email protected]" + m_CRLF +
                    "CSeq: 27481 INVITE" + m_CRLF +
                    "User-Agent: asterisk" + m_CRLF +
                    "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY" + m_CRLF +
                    "Contact: <sip:[email protected]>" + m_CRLF +
                    "Content-Type: application/sdp" + m_CRLF +
                    "Content-Length: 352" + m_CRLF +
                    m_CRLF +
                    "v=0" + m_CRLF +
                    "o=root 24710 24712 IN IP4 213.168.225.133" + m_CRLF +
                    "s=session" + m_CRLF +
                    "c=IN IP4 213.168.225.133" + m_CRLF +
                    "t=0 0" + m_CRLF +
                    "m=audio 18656 RTP/AVP 0 8 18 3 97 111 101" + m_CRLF +
                    "a=rtpmap:0 PCMU/8000" + m_CRLF +
                    "a=rtpmap:8 PCMA/8000" + m_CRLF +
                    "a=rtpmap:18 G729/8000" + m_CRLF +
                    "a=rtpmap:3 GSM/8000" + m_CRLF +
                    "a=rtpmap:97 iLBC/8000" + m_CRLF +
                    "a=rtpmap:111 G726-32/8000" + m_CRLF +
                    "a=rtpmap:101 telephone-event/8000" + m_CRLF +
                    "a=fmtp:101 0-16" + m_CRLF +
                    "a=silenceSupp:off - - - -" + m_CRLF;

                SIPMessage  sipMessage = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);
                SIPResponse okResp     = SIPResponse.ParseSIPResponse(sipMessage);

                Assert.IsTrue(okResp.Status == SIPResponseStatusCodesEnum.Ok, "The SIP response status was not parsed correctly.");
                Assert.IsTrue(okResp.Body.Length == 352, "The SIP response body length was not correct.");

                Console.WriteLine("-----------------------------------------");
            }
Example #2
0
            public void ParseMultiLineViaResponse()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg =
                    "SIP/2.0 200 OK" + m_CRLF +
                    "Via: SIP/2.0/UDP 194.213.29.100:5060;branch=z9hG4bK5feb18267ce40fb05969b4ba843681dbfc9ffcff, SIP/2.0/UDP 194.213.29.54:5061;branch=z9hG4bK52b6a8b7" + m_CRLF +
                    "Record-Route: <sip:194.213.29.100:5060;lr>" + m_CRLF +
                    "From: Unknown <sip:[email protected]:5061>;tag=as58cbdbd1" + m_CRLF +
                    "To: <sip:[email protected]:5060>;tag=1144090013" + m_CRLF +
                    "Call-ID: [email protected]" + m_CRLF +
                    "CSeq: 102 INVITE" + m_CRLF +
                    "Contact: <sip:[email protected]:5060>" + m_CRLF +
                    "Server: Patton SN4634 3BIS 00A0BA04469B R5.3 2009-01-15 H323 SIP BRI M5T SIP Stack/4.0.28.28" + m_CRLF +
                    "Supported: replaces" + m_CRLF +
                    "Content-Type: application/sdp" + m_CRLF +
                    "Content-Length: 298" + m_CRLF +
                    m_CRLF +
                    "v=0" + m_CRLF +
                    "o=MxSIP 0 56 IN IP4 10.10.10.155" + m_CRLF +
                    "s=SIP Call" + m_CRLF +
                    "c=IN IP4 10.10.10.155" + m_CRLF +
                    "t=0 0" + m_CRLF +
                    "m=audio 4974 RTP/AVP 0 18 8 101" + m_CRLF +
                    "a=rtpmap:0 PCMU/8000" + m_CRLF +
                    "a=rtpmap:18 G729/8000" + m_CRLF +
                    "a=rtpmap:8 PCMA/8000" + m_CRLF +
                    "a=rtpmap:101 telephone-event/8000" + m_CRLF +
                    "a=fmtp:18 annexb=no" + m_CRLF +
                    "a=fmtp:101 0-16" + m_CRLF +
                    "a=sendrecv" + m_CRLF +
                    "m=video 0 RTP/AVP 31 34 103 99";

                SIPMessage  sipMessage = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);
                SIPResponse okResp     = SIPResponse.ParseSIPResponse(sipMessage);

                Assert.IsTrue(okResp.Header.Vias.Length == 2, "The wrong number of Record-Route headers were present in the parsed response.");
                Assert.IsTrue(okResp.Header.Vias.TopViaHeader.ContactAddress == "194.213.29.100:5060", "The top via contact address was not ocrrectly parsed.");

                Console.WriteLine("-----------------------------------------");
            }
Example #3
0
            public void ParseMSCOkResponse()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg =
                    "SIP/2.0 200 OK" + m_CRLF +
                    "From: Blue Face<sip:[email protected]>;tag=as5fd53de7" + m_CRLF +
                    "To: sip:[email protected];tag=MTHf2-ol1Yn0" + m_CRLF +
                    "Call-ID: [email protected]:5061" + m_CRLF +
                    "CSeq: 102 INVITE" + m_CRLF +
                    "Via: SIP/2.0/UDP 213.168.225.133:5060;branch=z9hG4bKG+WGOVwLyT6vOW9s" + m_CRLF +
                    "Via: SIP/2.0/UDP 213.168.225.133:5061;branch=z9hG4bK09db9c73" + m_CRLF +
                    "Contact: +3535xxx<sip:[email protected]:5061>" + m_CRLF +
                    "User-Agent: MSC/VC510  Build-Date Nov  7 2005" + m_CRLF +
                    "Allow: INVITE,BYE,CANCEL,OPTIONS,PRACK,NOTIFY,UPDATE,REFER" + m_CRLF +
                    "Supported: timer,replaces" + m_CRLF +
                    "Record-Route: <sip:213.168.225.133:5060;lr>,<sip:213.168.225.133:5061;lr>" + m_CRLF +
                    "Content-Type: application/sdp" + m_CRLF +
                    "Content-Length: 182" + m_CRLF +
                    m_CRLF +
                    "v=0" + m_CRLF +
                    "o=xxxxxxxxx 75160 1 IN IP4 127.127.127.30" + m_CRLF +
                    "s=-" + m_CRLF +
                    "c=IN IP4 127.127.127.30" + m_CRLF +
                    "t=0 0" + m_CRLF +
                    "m=audio 8002 RTP/AVP 0 101" + m_CRLF +
                    "a=rtpmap:0 PCMU/8000" + m_CRLF +
                    "a=rtpmap:101 telephone-event/8000" + m_CRLF +
                    "a=ptime:20";

                SIPMessage  sipMessage = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);
                SIPResponse okResp     = SIPResponse.ParseSIPResponse(sipMessage);

                Console.WriteLine("To: " + okResp.Header.To.ToString());

                Assert.AreEqual(SIPResponseStatusCodesEnum.Ok, okResp.Status, "Response should have been ok.");
                Assert.AreEqual("127.0.0.1", okResp.Header.To.ToURI.Host, "To URI host was not parsed correctly.");

                Console.WriteLine("-----------------------------------------");
            }
Example #4
0
            public void ParseForbiddenResponse()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg = "SIP/2.0 403 Forbidden" + m_CRLF +
                                "Via: SIP/2.0/UDP 192.168.1.1;branch=z9hG4bKbcb78f72d221beec" + m_CRLF +
                                "From: <sip:sip.blueface.ie>;tag=9a4c86234adcc297" + m_CRLF +
                                "To: <sip:sip.blueface.ie>;tag=as6900b876" + m_CRLF +
                                "Call-ID: [email protected]" + m_CRLF +
                                "CSeq: 100 REGISTER" + m_CRLF +
                                "User-Agent: asterisk" + m_CRLF +
                                "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY" + m_CRLF +
                                "Contact: <sip:[email protected]>" + m_CRLF +
                                "Content-Length: 0" + m_CRLF + m_CRLF;

                SIPMessage  sipMessage    = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);
                SIPResponse forbiddenResp = SIPResponse.ParseSIPResponse(sipMessage);

                Assert.IsTrue(forbiddenResp.Status == SIPResponseStatusCodesEnum.Forbidden, "The SIP response status was not parsed correctly.");

                Console.WriteLine("-----------------------------------------");
            }
Example #5
0
            public void ParseResponseNoEndDoubleCRLFUnitTest()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg =
                    "SIP/2.0 100 Trying" + m_CRLF +
                    "Via: SIP/2.0/UDP 213.168.225.135:5060;branch=z9hG4bKD+ta2mJ+C+VV/L50aPO1lFJnrag=" + m_CRLF +
                    "Via: SIP/2.0/UDP 192.168.1.2:5065;received=220.240.255.198:64193;branch=z9hG4bKB86FC8D2431F49E9862D1EE439C78AD8" + m_CRLF +
                    "From: bluesipd <sip:bluesipd@bluesipd:5065>;tag=3272744142" + m_CRLF +
                    "To: <sip:303@bluesipd>" + m_CRLF +
                    "Call-ID: [email protected]" + m_CRLF +
                    "CSeq: 45560 INVITE" + m_CRLF +
                    "User-Agent: asterisk" + m_CRLF +
                    "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY" + m_CRLF +
                    "Contact: <sip:[email protected]>" + m_CRLF +
                    "Content-Length: 0" + m_CRLF;

                SIPMessage sipMessage = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);

                Assert.IsTrue(sipMessage != null, "The SIP message not parsed correctly.");

                Console.WriteLine("-----------------------------------------");
            }
Example #6
0
            public void ParseCiscoOptionsResponseUnitTest()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg =
                    "SIP/2.0 200 OK" + m_CRLF +
                    "Via: SIP/2.0/UDP 213.168.225.133:5060;branch=z9hG4bK7ae332e73550dbdf2f159061651e7ed5bb88ac52, SIP/2.0/UDP 194.213.29.52:5064;branch=z9hG4bK1121681627" + m_CRLF +
                    "From: <sip:[email protected]:5064>;tag=8341482660" + m_CRLF +
                    "To: <sip:[email protected]:5060>;tag=000e38e46c60ef28651381fe-201e6ab1" + m_CRLF +
                    "Call-ID: [email protected]" + m_CRLF +
                    "Date: Wed, 29 Nov 2006 22:31:58 GMT" + m_CRLF +
                    "CSeq: 148 OPTIONS" + m_CRLF +
                    "Server: CSCO/7" + m_CRLF +
                    "Content-Type: application/sdp" + m_CRLF +
                    "Allow: OPTIONS,INVITE,BYE,CANCEL,REGISTER,ACK,NOTIFY,REFER" + m_CRLF +
                    "Content-Length: 193" + m_CRLF +
                    m_CRLF +
                    "v=0" + m_CRLF +
                    "o=Cisco-SIPUA (null) (null) IN IP4 87.198.196.121" + m_CRLF +
                    "s=SIP Call" + m_CRLF +
                    "c=IN IP4 87.198.196.121" + m_CRLF +
                    "t=0 0" + m_CRLF +
                    "m=audio 1 RTP/AVP 18 0 8" + m_CRLF +
                    "a=rtpmap:18 G729/8000" + m_CRLF +
                    "a=rtpmap:0 PCMU/8000" + m_CRLF +
                    "a=rtpmap:8 PCMA/8000" + m_CRLF +
                    m_CRLF;

                SIPMessage  sipMessage  = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);
                SIPResponse sipResponse = SIPResponse.ParseSIPResponse(sipMessage);

                Assert.IsTrue(sipMessage != null, "The SIP message not parsed correctly.");
                Assert.IsTrue(sipResponse.Header.Vias.Length == 2, "The SIP reponse did not end up with the right number of Via headers.");

                Console.WriteLine("-----------------------------------------");
            }
Example #7
0
            public void ParseOptionsResponse()
            {
                Console.WriteLine("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name);

                string sipMsg =
                    "SIP/2.0 200 OK" + m_CRLF +
                    "Via: SIP/2.0/UDP 194.213.29.11:5060;branch=z9hG4bK330f55c874" + m_CRLF +
                    "From: Anonymous <sip:194.213.29.11:5060>;tag=6859154930" + m_CRLF +
                    "To: <sip:[email protected]:10062>;tag=0013c339acec0fe007b80bbf-30071da3" + m_CRLF +
                    "Call-ID: [email protected]" + m_CRLF +
                    "Date: Mon, 01 May 2006 13:47:24 GMT" + m_CRLF +
                    "CSeq: 915 OPTIONS" + m_CRLF +
                    "Server: CSCO/7" + m_CRLF +
                    "Content-Type: application/sdp" + m_CRLF +
                    "Content-Length: 247" + m_CRLF +
                    "Allow: OPTIONS,INVITE,BYE,CANCEL,REGISTER,ACK,NOTIFY,REFER" + m_CRLF +
                    m_CRLF +
                    "v=0" + m_CRLF +
                    "o=Cisco-SIPUA (null) (null) IN IP4 192.168.1.100" + m_CRLF +
                    "s=SIP Call" + m_CRLF +
                    "c=IN IP4 192.168.1.100" + m_CRLF +
                    "t=0 0" + m_CRLF +
                    "m=audio 1 RTP/AVP 0 8 18 101" + m_CRLF +
                    "a=rtpmap:0 PCMU/8000" + m_CRLF +
                    "a=rtpmap:8 PCMA/8000" + m_CRLF +
                    "a=rtpmap:18 G729/8000" + m_CRLF +
                    "a=rtpmap:101 telephone-event/8000" + m_CRLF +
                    "a=fmtp:101 0-15" + m_CRLF + m_CRLF;

                SIPMessage  sipMessage  = SIPMessage.ParseSIPMessage(Encoding.UTF8.GetBytes(sipMsg), null, null);
                SIPResponse optionsResp = SIPResponse.ParseSIPResponse(sipMessage);

                Assert.IsTrue(optionsResp.Status == SIPResponseStatusCodesEnum.Ok, "The SIP response status was not parsed correctly.");

                Console.WriteLine("-----------------------------------------");
            }