📄 testsipmessage.cxx
字号:
auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));
assert(message->exists(h_Unsupporteds));
cerr << message->header(h_AllowEvents).size() << endl;
cerr << message->header(h_Vias).size() << endl;
cerr << message->header(h_ProxyAuthorizations).size() << endl;
cerr << *message << endl;
}
{
SipMessage msg;
msg.header(h_CallId).value() = "8d057730fba2cd5e";
cerr << msg.header(h_CallId) << endl;
const SipMessage msg1(msg);
cerr << msg1.header(h_CallId) << endl;
}
{
char * txt = ("SIP/2.0 489 Bad Event" CRLF
"Via: SIP/2.0/UDP RjS.localdomain:5070;branch=z9hG4bK-c87542-899769382-1--c87542-" CRLF
"CSeq: " CRLF
"Call-ID: f354ce714fb8a95c" CRLF
"From: <sip:RjS@127.0.0.1:5070>;tag=59e7dd57" CRLF
"To: <sip:RjS@127.0.0.1:5060>" CRLF
CRLF);
TestSupport::prettyPrint(txt,strlen(txt));
auto_ptr<SipMessage> response(TestSupport::makeMessage(txt,true));
try
{
response->header(h_CSeq).method();
assert(false);
}
catch (ParseBuffer::Exception& e)
{
cerr << e << endl;
}
}
{
char * txt = ("SIP/2.0 489 Bad Event" CRLF
"Via: SIP/2.0/UDP RjS.localdomain:5070;branch=z9hG4bK" RESIP_COOKIE "899769382-1--" RESIP_COOKIE "" CRLF
"CSeq: 1 SUBSCRIBE" CRLF
"Allow-Events: " CRLF
"Call-ID: f354ce714fb8a95c" CRLF
"From: <sip:RjS@127.0.0.1:5070>;tag=59e7dd57" CRLF
"To: <sip:RjS@127.0.0.1:5060>" CRLF
CRLF);
TestSupport::prettyPrint(txt,strlen(txt));
auto_ptr<SipMessage> response(TestSupport::makeMessage(txt,true));
assert(response->exists(h_AllowEvents));
assert(response->header(h_AllowEvents).size() == 0);
cerr << response->brief() << endl;
assert(Data::from(response->brief()) == "SipResp: 489 tid=899769382 cseq=SUBSCRIBE / 1 from(wire)");
char * txt2 = ("SIP/2.0 489 Bad Event" CRLF
"Via: SIP/2.0/UDP RjS.localdomain:5070;branch=z9hG4bK" RESIP_COOKIE "899769382-1--" RESIP_COOKIE "" CRLF
"CSeq: 1 SUBSCRIBE" CRLF
"Call-ID: f354ce714fb8a95c" CRLF
"From: <sip:RjS@127.0.0.1:5070>;tag=59e7dd57" CRLF
"To: <sip:RjS@127.0.0.1:5060>" CRLF
"Allow-Events:" CRLF
CRLF);
TestSupport::prettyPrint(txt2,strlen(txt2));
auto_ptr<SipMessage> r2(TestSupport::makeMessage(txt2,true));
assert(r2->exists(h_AllowEvents));
assert(r2->header(h_AllowEvents).size() == 0);
char * txt3 =("SIP/2.0 489 Bad Event" CRLF
"Via: SIP/2.0/UDP RjS.localdomain:5070;branch=z9hG4bK" RESIP_COOKIE "899769382-1--" RESIP_COOKIE "" CRLF
"CSeq: 1 SUBSCRIBE" CRLF
"Call-ID: f354ce714fb8a95c" CRLF
"From: <sip:RjS@127.0.0.1:5070>;tag=59e7dd57" CRLF
"To: <sip:RjS@127.0.0.1:5060>" CRLF
"Allow-Events: foo" CRLF
"Allow-Events: bar" CRLF
"Allow-Events: " CRLF
CRLF);
auto_ptr<SipMessage> r3(TestSupport::makeMessage(txt3,false));
assert(r3->exists(h_AllowEvents));
assert(r3->header(h_AllowEvents).size() == 2);
assert(r3->header(h_AllowEvents).front().value() == "foo");
cerr << r3->brief() << endl;
assert(Data::from(r3->brief()) == "SipResp: 489 tid=899769382 cseq=SUBSCRIBE / 1 from(tu)");
char * txt4 = ("SIP/2.0 489 Bad Event" CRLF
"Via: SIP/2.0/UDP RjS.localdomain:5070;branch=z9hG4bK" RESIP_COOKIE "899769382-1--" RESIP_COOKIE "" CRLF
"CSeq: 1 SUBSCRIBE" CRLF
"Call-ID: f354ce714fb8a95c" CRLF
"From: <sip:RjS@127.0.0.1:5070>;tag=59e7dd57" CRLF
"To: <sip:RjS@127.0.0.1:5060>" CRLF
"Allow-Events: foo,foobar" CRLF
"Allow-Events: bar,gak" CRLF
"Allow-Events: " CRLF
CRLF);
auto_ptr<SipMessage> r4(TestSupport::makeMessage(txt4,true));
assert(r4->exists(h_AllowEvents) );
cerr << r4->header(h_AllowEvents).size() << endl;
cerr << r4->header(h_AllowEvents).front().value() << endl;
assert(r4->header(h_AllowEvents).size() == 4);
assert(r4->header(h_AllowEvents).front().value() == "foo");
char * txt5 = ("SIP/2.0 489 Bad Event" CRLF
"Via: SIP/2.0/UDP RjS.localdomain:5070;branch=z9hG4bK" RESIP_COOKIE "899769382-1--" RESIP_COOKIE "" CRLF
"CSeq: 1 SUBSCRIBE" CRLF
"Call-ID: f354ce714fb8a95c" CRLF
"From: <sip:RjS@127.0.0.1:5070>;tag=59e7dd57" CRLF
"To: <sip:RjS@127.0.0.1:5060>" CRLF
"Allow-Events: " CRLF
"Allow-Events: " CRLF
"Allow-Events: " CRLF
CRLF);
auto_ptr<SipMessage> r5(TestSupport::makeMessage(txt5,true));
assert(r5->exists(h_AllowEvents) );
assert(r5->header(h_AllowEvents).size() == 0);
}
{
// Test just in time parsing with comparison: NameAddr;
char* txt = ("INVITE sip:ext101@192.168.2.220:5064;transport=UDP SIP/2.0\r\n"
"To: <sip:ext101@whistler.gloo.net:5061>\r\n"
"From: <sip:ext103@whistler.gloo.net:5061>;tag=a731\r\n"
"Via: SIP/2.0/UDP whistler.gloo.net:5061;branch=z9hG4bK" RESIP_COOKIE "11111-1-client_data-" RESIP_COOKIE ";stid=489573115\r\n"
"Call-ID: 643f2f06\r\n"
"CSeq: 1 INVITE\r\n"
"Record-Route: <sip:proxy@whistler.gloo.net:5061;lr>\r\n"
"Contact: <sip:ext103@192.168.2.220:5068;transport=UDP>\r\n"
"Max-Forwards: 69\r\n"
"Accept: foo/bar\r\n"
"Content-Type: bar/foo\r\n"
"Content-Encoding: foo\r\n"
"Content-Disposition: bar\r\n"
"Content-Length: 0\r\n"
"\r\n");
auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));
assert(message->header(h_ContentDisposition) < message->header(h_ContentEncoding));
assert(message->header(h_ContentType) < message->header(h_Accepts).front());
assert(message->header(h_To) < message->header(h_From));
cerr << message->brief() << endl;
assert(Data::from(message->brief()) == "SipReq: INVITE ext101@192.168.2.220:5064 tid=11111 cseq=INVITE contact=ext103@192.168.2.220:5068 / 1 from(tu)");
}
{
cerr << "!Proxy-Authorization params" << endl;
char* txt = ("INVITE sip:ext101@192.168.2.220:5064;transport=UDP SIP/2.0\r\n"
"To: <sip:ext101@whistler.gloo.net:5061>\r\n"
"From: <sip:ext103@whistler.gloo.net:5061>;tag=a731\r\n"
"Via: SIP/2.0/UDP whistler.gloo.net:5061;branch=z9hG4bK" RESIP_COOKIE "563465-1--" RESIP_COOKIE ";stid=489573115\r\n"
"Via: SIP/2.0/UDP whistler.gloo.net:5068;branch=z9hG4bK" RESIP_COOKIE "489573115-1--" RESIP_COOKIE ";received=192.168.2.220\r\n"
"Call-ID: 643f2f06\r\n"
"CSeq: 1 INVITE\r\n"
"Proxy-Authorization: Digest username=\"Alice\",realm=\"atlanta.com\",nonce=\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\",response=\"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\"\r\n"
"Proxy-Authorization: Digest username=\"Alice\", realm = \"atlanta.com\", nonce=\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\", response=\"YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY\"\r\n"
"Record-Route: <sip:proxy@whistler.gloo.net:5061;lr>\r\n"
"Contact: <sip:ext103@192.168.2.220:5068;transport=UDP>\r\n"
"Max-Forwards: 69\r\n"
"Content-Length: 0\r\n"
"\r\n");
auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));
assert(message->header(h_ProxyAuthorizations).size() == 2);
assert(message->header(h_ProxyAuthorizations).front().param(p_realm) == "atlanta.com");
assert(message->header(h_ProxyAuthorizations).front().param(p_response) == "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY");
cerr << *message << endl;
}
{
char* txt = ("INVITE sip:ext101@192.168.2.220:5064;transport=UDP SIP/2.0\r\n"
"To: <sip:ext101@whistler.gloo.net:5061>\r\n"
"From: <sip:ext103@whistler.gloo.net:5061>;tag=a731\r\n"
"Via: SIP/2.0/UDP whistler.gloo.net:5061;branch=z9hG4bK" RESIP_COOKIE "21312-1--" RESIP_COOKIE ";stid=489573115\r\n"
"Via: SIP/2.0/UDP whistler.gloo.net:5068;branch=z9hG4bK" RESIP_COOKIE "489573115-1--" RESIP_COOKIE ";received=192.168.2.220\r\n"
"Call-ID: 643f2f06\r\n"
"CSeq: 1 INVITE\r\n"
"Record-Route: <sip:proxy@whistler.gloo.net:5061;lr>\r\n"
"Contact: <sip:ext103@192.168.2.220:5068;transport=UDP>\r\n"
"Max-Forwards: 69\r\n"
"Content-Length: 0\r\n"
"\r\n");
auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));
cerr << *message << endl;
assert(message->header(h_Vias).front().param(UnknownParameterType("stid")) == "489573115");
message->header(h_Vias).front().param(p_received) = "received";
assert(message->header(h_Vias).front().param(UnknownParameterType("stid")) == "489573115");
}
{
char* txt = ("SIP/2.0 200 OK""\r\n"
"From: 1245<sip:4000@193.12.63.124:5060>;tag=7c3f0cc1-13c4-3e5a380c-1ac5646-257e""\r\n"
"To: prolab<sip:5000@host2.sipdragon.sipit.net>;tag=7c3f0cc1-13c5-3e5a380d-1ac5827-618f""\r\n"
"Call-ID: 9e9017c-7c3f0cc1-13c4-3e5a380c-1ac5646-3700@193.12.63.124""\r\n"
"CSeq: 1 INVITE""\r\n"
"Via: SIP/2.0/UDP host2.sipdragon.sipit.net;received=193.12.62.209;branch=z9hG4bK" RESIP_COOKIE "-3e5a380c-1ac5646-adf" RESIP_COOKIE "1-1""\r\n"
"Via: SIP/2.0/UDP 193.12.63.124:5060;received=193.12.63.124;branch=z9hG4bK-3e5a380c-1ac5646-adf""\r\n"
"Contact: <sip:5000@193.12.63.124:5061>""\r\n"
"Record-Route: <sip:proxy@host2.sipdragon.sipit.net:5060;lr>""\r\n"
"Content-Length:0\r\n\r\n");
auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));
cerr << *message << endl;
message->header(h_Vias).front();
message->header(h_From);
message->header(h_To);
cerr << message->header(h_Vias).front().param(p_branch).getTransactionId() << endl;
cerr << message->header(h_Vias).back().param(p_branch).getTransactionId() << endl;
}
{
char *txt = ("SIP/2.0 200 OK\r\n"
"From: 1245<sip:4000@193.12.63.124:5060>;tag=7c3f0cc1-13c4-3e5a380c-1ac5646-257e\r\n"
"To: prolab<sip:5000@host2.sipdragon.sipit.net>;tag=7c3f0cc1-13c5-3e5a380d-1ac5827-618f\r\n"
"Call-ID: 9e9017c-7c3f0cc1-13c4-3e5a380c-1ac5646-3700@193.12.63.124\r\n"
"CSeq: 1 INVITE\r\n"
"Via: SIP/2.0/UDP host2.sipdragon.sipit.net;received=193.12.62.209;branch=z9hG4bK" RESIP_COOKIE "-3e5a380c-1ac5646-adf" RESIP_COOKIE "1-1\r\n"
"Via: SIP/2.0/UDP 193.12.63.124:5060;received=193.12.63.124;branch=z9hG4bK-3e5a380c-1ac5646-adf\r\n"
"Contact: <sip:5000@193.12.63.124:5061>\r\n"
"Record-Route: <sip:proxy@host2.sipdragon.sipit.net:5060;lr>\r\n"
"Content-Length:0\r\n\r\n");
auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));
assert(message.get());
for (Vias::iterator i = message->header(h_Vias).begin();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -