void stalledMediaStreamDetectionTest_StreamStalled() { SetFakeReceptionOfPacketsFlag( false ); RouteState::setSecret("fixed"); const char* message = "INVITE sip:[email protected]:5060;x-sipX-pubcontact=47.135.162.145%3A29544 SIP/2.0\r\n" "Record-Route: <sip:192.168.0.2:5060;lr>\r\n" "From: \"L3\"<sip:[email protected]>;tag=94bb9480-c0a80065-13c4-50045-20c55bd3-50045\r\n" "To: <sip:[email protected]>\r\n" "Call-Id: 94bb55a0-c0a80065-13c4-50045-61a3ad3-50045@rjolyscs2.ca.nortel.com\r\n" "Cseq: 1 INVITE\r\n" "Via: SIP/2.0/UDP 192.168.0.2;branch=z9hG4bK-sipXecs-8130adee90e0277761fec4ee1c194a56838f~9d6590763d78764b93a42e94dbd6b75a\r\n" "Via: SIP/2.0/UDP 192.168.0.101:5060;branch=z9hG4bK-50045-13890e4e-4f17a229\r\n" "Max-Forwards: 19\r\n" "Supported: replaces\r\n" "User-Agent: LG-Nortel LIP 6812 v1.2.38sp SN/00405A183385\r\n" "Contact: <sip:[email protected]:5060;x-sipX-nonat>\r\n" "Content-Type: application/sdp\r\n" "Content-Length: 301\r\n" "Date: Fri, 13 Jun 2008 14:48:44 GMT\r\n" "\r\n" "\r\n" "v=0\r\n" "o=LGEIPP 14595 14595 IN IP4 192.168.0.101\r\n" "s=SIP Call\r\n" "c=IN IP4 192.168.0.101\r\n" "t=0 0\r\n" "m=audio 23016 RTP/AVP 18 4 0 8 101\r\n" "a=rtpmap:18 G729/8000\r\n" "a=rtpmap:4 G723/8000\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:8 PCMA/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:18 annexb=no\r\n" "a=fmtp:101 0-11\r\n" "a=sendrecv\r\n"; SipMessage testMsg(message, strlen(message)); UtlString rejectReason; UtlSList emptyList; RouteState routeState( message, emptyList, "192.168.0.2:5060" ); AuthPlugin::AuthResult result; result = pNatTraversalAgent->authorizeAndModify( "id", //dummy Url("sip:[email protected]:5060"), //dummy routeState, "INVITE", AuthPlugin::CONTINUE, testMsg, false, rejectReason ); // check auth result CPPUNIT_ASSERT( result == AuthPlugin::CONTINUE ); routeState.update( &testMsg ); pNatTraversalAgent->handleOutputMessage( testMsg, "47.135.162.145", 29544 ); // Mow simulalate the reception of the response const char* response = "SIP/2.0 200 OK\r\n" "From: \"L3\"<sip:[email protected]>;tag=94bb9480-c0a80065-13c4-50045-20c55bd3-50045\r\n" "To: <sip:[email protected]>;tag=94bf81c0-c0a8010b-13c4-4fc07-650a9211-4fc07\r\n" "Call-Id: 94bb55a0-c0a80065-13c4-50045-61a3ad3-50045@rjolyscs2.ca.nortel.com\r\n" "Cseq: 1 INVITE\r\n" "Via: SIP/2.0/UDP 192.168.0.101:5060;branch=z9hG4bK-50045-13890e4e-4f17a229;id=1234-3\r\n" "Supported: replaces\r\n" "Contact: <sip:[email protected]:5060>\r\n" "Record-Route: <sip:47.135.162.140:5060;lr;sipXecs-rs=%2Afrom%7EOTRiYjk0ODAtYzBhODAwNjUtMTNjNC01MDA0NS0yMGM1NWJkMy01MDA0NQ%60%60.ntap%2ACeT%7ENDcuMTM1LjE2Mi4xNDU6Mjk1NDQ7dHJhbnNwb3J0PXVkcA%60%60.ntap%2Aid%7EMTIzNC0z%213d7b53562948991d1cf59dfe7fdaaf24>\r\n" "Content-Type: application/sdp\r\n" "Content-Length: 250\r\n" "Date: Fri, 13 Jun 2008 14:48:46 GMT\r\n" "\r\n" "\r\n" "v=0\r\n" "o=LGEIPP 12617 12617 IN IP4 192.168.1.11\r\n" "s=SIP Call\r\n" "c=IN IP4 192.168.1.11\r\n" "t=0 0\r\n" "m=audio 25038 RTP/AVP 4 101\r\n" "c=IN IP4 192.168.0.2\r\n" "a=rtpmap:4 G723/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-11\r\n" "a=sendrecv\r\n" "a=x-sipx-ntap:192.168.0.2;3\r\n"; SipMessage okResp( response, strlen(response) ); pNatTraversalAgent->handleOutputMessage( okResp, "192.168.0.101", 5060 ); // Mow simulalate the reception of the ACK const char* ack = "ACK sip:[email protected]:5060;x-sipX-pubcontact=47.135.162.145%3A29544 SIP/2.0\r\n" "From: \"L3\"<sip:[email protected]>;tag=94bb9480-c0a80065-13c4-50045-20c55bd3-50045\r\n" "To: <sip:[email protected]>;tag=94bf81c0-c0a8010b-13c4-4fc07-650a9211-4fc07\r\n" "Call-Id: 94bb55a0-c0a80065-13c4-50045-61a3ad3-50045@rjolyscs2.ca.nortel.com\r\n" "Cseq: 1 ACK\r\n" "Via: SIP/2.0/UDP 192.168.0.2;branch=z9hG4bK-sipXecs-8130adee90e0277761fec4ee1c194a56838f~9d6590763d78764b93a42e94dbd6b75a\r\n" "Via: SIP/2.0/UDP 192.168.0.101:5060;branch=z9hG4bK-50045-13890e4e-4f17a229\r\n" "Max-Forwards: 19\r\n" "Supported: replaces\r\n" "User-Agent: LG-Nortel LIP 6812 v1.2.38sp SN/00405A183385\r\n" "Contact: <sip:[email protected]:5060;x-sipX-nonat>\r\n" "Content-Length: 0\r\n" "\r\n"; SipMessage ackRequest( ack, strlen(ack) ); UtlSList routeList; UtlString poppedRoute("<sip:47.135.162.140:5060;lr;sipXecs-rs=%2Afrom%7EOTRiYjk0ODAtYzBhODAwNjUtMTNjNC01MDA0NS0yMGM1NWJkMy01MDA0NQ%60%60.ntap%2ACeT%7ENDcuMTM1LjE2Mi4xNDU6Mjk1NDQ7dHJhbnNwb3J0PXVkcA%60%60.ntap%2Aid%7EMTIzNC0z%213d7b53562948991d1cf59dfe7fdaaf24>"); routeList.append( &poppedRoute ); RouteState newRouteState( message, routeList, "192.168.0.2:5060" ); result = pNatTraversalAgent->authorizeAndModify( "id", //dummy Url("sip:[email protected]:5060"), //dummy newRouteState, "ACK", AuthPlugin::CONTINUE, ackRequest, false, rejectReason ); // check auth result CPPUNIT_ASSERT( result == AuthPlugin::CONTINUE ); pNatTraversalAgent->handleOutputMessage( ackRequest, "47.135.162.145", 29544 ); // Check that the DialogTracker is still around after 10 seconds. CallTracker* pTracker; UtlString callId; testMsg.getCallIdField( &callId ); pTracker = pNatTraversalAgent->getCallTrackerFromCallId( callId ); CPPUNIT_ASSERT( pTracker != 0 ); CPPUNIT_ASSERT( pTracker->mSessionContextsMap.entries() == 1 ); sleep( MAX_TIMER_TICK_COUNTS_BEFORE_CALL_TRACKER_CLEAN_UP * CLEAN_UP_TIMER_IN_SECS * 2 /*safety margin*/ ); pTracker = pNatTraversalAgent->getCallTrackerFromCallId( callId ); CPPUNIT_ASSERT( pTracker == 0 ); }
bool _cmdSync( co::ICommand& command ) { TEST( _gotAsync ); ackRequest( command.getNode(), command.get< uint32_t >( )); return true; }