Example #1
0
      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 );
      }
Example #2
0
 bool _cmdSync( co::ICommand& command )
 {
     TEST( _gotAsync );
     ackRequest( command.getNode(), command.get< uint32_t >( ));
     return true;
 }