Commit c95c2d39 authored by Yann Garcia's avatar Yann Garcia
Browse files

Enhance SDP decoding

parent ab8db037
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ int sip_codec_request::encode (const LibSip__SIPTypesAndValues::Request& msg, OC
{
  loggers::get_instance().log_msg(">>> sip_codec_request::encode: ", (const Base_Type&)msg);
  
  TRACE_INITIALIZE(TRACE_LEVEL7, NULL);
  OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_ERROR, NULL, ">>> sip_codec_request::encode\n"));
  
  osip_message_t* sip_message = nullptr; // TODO Use smart pointer
  ::parser_init();
  int result = ::osip_message_init(&sip_message);
@@ -46,6 +49,9 @@ int sip_codec_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValue
{
  loggers::get_instance().log_msg(">>> sip_codec_request::decode: data=", data);

  TRACE_INITIALIZE(TRACE_LEVEL7, NULL);
  OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_ERROR, NULL, ">>> sip_codec_request::decode\n"));
  
  // Sanity checks
  if (data.lengthof() == 0) {
    loggers::get_instance().warning("sip_codec_request::decode: Wrong parameters");
+4 −4
Original line number Diff line number Diff line
@@ -178,17 +178,17 @@ if [ "$1" == "prof" ]
then
    if [ "${OSTYPE}" == "cygwin" ]
    then
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -DENABLE_TRACE -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    else
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -DENABLE_TRACE -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    fi
    LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
    if [ "${OSTYPE}" == "cygwin" ]
    then
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -DENABLE_TRACE -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    else
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -DENABLE_TRACE -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    fi
    LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
+4 −4
Original line number Diff line number Diff line
@@ -178,17 +178,17 @@ if [ "$1" == "prof" ]
then
    if [ "${OSTYPE}" == "cygwin" ]
    then
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -D_XOPEN_SOURCE=700 -DAS_USE_SSL -DENABLE_TRACE -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    else
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-pg -Wall -std=c++11 -fPIC -DAS_USE_SSL -DENABLE_TRACE -pthreads -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    fi
    LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -pg -pthread -fPIC -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
else
    if [ "${OSTYPE}" == "cygwin" ]
    then
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -DENABLE_TRACE -D_XOPEN_SOURCE=700 -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    else
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
        CXXFLAGS_DEBUG_MODE='s/-Wall/-ggdb -O0 -Wall -std=c++11 -fPIC -DAS_USE_SSL -DENABLE_TRACE -pthread -fstack-check -fstack-protector -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
    fi
    LDFLAGS_DEBUG_MODE='s/LDFLAGS = /LDFLAGS = -g -pthread -fPIC -fstack-check -fstack-protector -fsanitize=address -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer/g'
fi
+2 −262
Original line number Diff line number Diff line
@@ -2160,266 +2160,6 @@ module AtsNg112_TestCases {
      
    } // End of group f_TC_ESRP_SIP_INVITE_BV_01 
    
    /**
     * @desc "IUT adds Incident-ID and Call-ID INFO headers" 
     */
    testcase TC_ESRP_SIP_INVITE_BV_02(
                                      in CSeq p_cSeq_s
                                      ) runs on HttpImsComponent system TestAdapter {
        // Local variables
        var HttpComponent v_ecrf;
        var ImsComponent v_ue;
        var ImsComponent v_psap;
        
        // Test control
        if (not(PICS_ESRP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN1) or not(PICS_L_FIS_GEO1) or not(PICS_E_SIP_HDR1)) {
          log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1 and PICS_L_FIS_GEO1 and PICS_E_SIP_HDR1 required for executing the TC ***");
          setverdict(inconc);
          stop;
        }
        
        // Test component configuration
        f_cf_03_up(v_ecrf, v_ue, v_psap);
        
        // Test adapter configuration
        
        // Preamble
        
        // Test Body
        v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_02_ecrf());
        f_incCSeq(p_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_02_ue(p_cSeq_s));
        f_incCSeq(p_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_02_psap(p_cSeq_s));
        f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone});
        
        // Postamble
        f_cf_03_down(v_ecrf, v_ue, v_psap);
      
    } // End of testcase TC_ESRP_SIP_INVITE_BV_02
    
    group f_TC_ESRP_SIP_INVITE_BV_02 {
      
      function f_TC_ESRP_SIP_INVITE_BV_02_ecrf() runs on HttpComponent {
        // Local variables
        var HeaderLines v_headers;
        var HttpMessage v_response;
        
        // Test control
        
        // Test component configuration
        f_cf_01_http_up();
        
        // Test adapter configuration
        
        // Preamble
        f_init_default_headers_list(v_headers);
        f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success);
        
        // test body
        tc_ac.start;
        alt {
          [] httpPort.receive(
                              mw_http_request(
                                              mw_http_request_post(
                                                                   PICS_ECRF_URI,
                                                                   v_headers,
                                                                   mw_http_message_body_xml(
                                                                                            mw_body_xml_find_service_request(
                                                                                                                             mw_find_service_request(
                                                                                                                                                     {
                                                                                                                                                      mw_location(
                                                                                                                                                                  PX_LOCATION_ID,
                                                                                                                                                                  { mw_extension_point },
                                                                                                                                                                  "geodetic-2d" // TODO Use a Pixit
                                                                                                                                                                  )
                                                                                                                                                     },
                                                                                                                                                     { },
                                                                                                                                                     PX_E_POLICE_SERVICE_URN
          )))))) {
            tc_ac.stop;
            
            f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
          }
          [] tc_ac.timeout {
            log("*** " & testcasename() & ": INCONC: Expected message not received ***");
            f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
          }
        } // End of 'alt' staement
        
        // Postamble
        f_cf_01_http_down();
        
      } // End of function f_TC_ESRP_SIP_INVITE_BV_02_ecrf
      
      function f_TC_ESRP_SIP_INVITE_BV_02_ue(
                                             in CSeq p_cSeq_s
                                             ) runs on ImsComponent {
        // Local variables
        
        // Test control
        
        // Test component configuration
        f_init_userprofile(c_userProfile_UE1atSUThome);
        f_initSipUrl(c_serviceProfile_EMERGENCY);
        f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
        
        // Test adapter configuration
        
        // Preamble
        f_IMS_preamble_woRegistration(p_cSeq_s)
        LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
        f_SendINVITE(m_INVITE_Request_noBody_UE(vc_requestUri,
                                                vc_callId,
                                                p_cSeq_s,
                                                vc_from,
                                                vc_to,
                                                vc_via,
                                                vc_contact
                                                ));
        f_awaitingResponse(mw_Response_Base(c_statusLine100, *, *));//vc_callId, vc_cSeq));
        f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success);
        
        // test body
        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        
        // Postamble
        
      } // End of function f_TC_ESRP_SIP_INVITE_BV_02_ue
      
      function f_TC_ESRP_SIP_INVITE_BV_02_psap(
                                               in CSeq p_cSeq_s
                                               ) runs on ImsComponent {
        // Local variables
        
        // Test control
        f_init_userprofile(c_userProfile_UE1atSUThome);
        f_initSipUrl(c_serviceProfile_EMERGENCY);
        f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
        
        // Test component configuration
        
        // Test adapter configuration
        
        // Preamble
        f_IMS_preamble_woRegistration(p_cSeq_s)
        LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
        f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success);
        
        // test body
        f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri));
        f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq));
        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        
        // Postamble
        
      } // End of function f_TC_ESRP_SIP_INVITE_BV_02_psap
      
    } // End of group f_TC_ESRP_SIP_INVITE_BV_02 
    
  } // End of group esrp_role
  
  group pasp_role {
    
    /**
     * @desc "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" 
     */
    testcase TC_PSAP_SIP_INVITE_BV_01(
                                      in CSeq p_cSeq_s
                                      ) runs on HttpImsComponent system TestAdapter {
        // Local variables
        var ImsComponent v_ue;
        var ImsComponent v_taker;
        
        // Test control
        if (not(PICS_PSAP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN1) or not(PICS_L_FIS_GEO1)) {
          log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1 and PICS_L_FIS_GEO1 required for executing the TC ***");
          setverdict(inconc);
          stop;
        }
        
        // Test component configuration
        f_cf_04_up(v_ue, v_taker);
        
        // Test adapter configuration
        
        // Preamble
        
        // Test Body
        f_incCSeq(p_cSeq_s); v_ue.start(f_TC_PSAP_SIP_INVITE_BV_01_ue(p_cSeq_s));
        f_incCSeq(p_cSeq_s); v_taker.start(f_TC_PSAP_SIP_INVITE_BV_01_taker(p_cSeq_s));
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone});
        
        // Postamble
        f_cf_04_down(v_ue, v_taker);
      
    } // End of testcase TC_PSAP_SIP_INVITE_BV_01
    
    group f_TC_PSAP_SIP_INVITE_BV_01 {
      
      function f_TC_PSAP_SIP_INVITE_BV_01_ue(
                                             in CSeq p_cSeq_s
                                             ) runs on ImsComponent {
        // Local variables
        
        // Test control
        
        // Test component configuration
        f_init_userprofile(c_userProfile_UE1atSUThome);
        f_initSipUrl(c_serviceProfile_EMERGENCY);
        f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
        
        // Test adapter configuration
        
        // Preamble
        f_IMS_preamble_woRegistration(p_cSeq_s)
        LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
        f_SendINVITE(m_INVITE_Request_noBody_UE(vc_requestUri,
                                                vc_callId,
                                                p_cSeq_s,
                                                vc_from,
                                                vc_to,
                                                vc_via,
                                                vc_contact
                                                ));
        f_awaitingResponse(mw_Response_Base(c_statusLine100, *, *));//vc_callId, vc_cSeq));
        f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success);
        
        // test body
        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        
        // Postamble
        
      } // End of function f_TC_PSAP_SIP_INVITE_BV_01_ue
      
      function f_TC_PSAP_SIP_INVITE_BV_01_taker(
                                                in CSeq p_cSeq_s
                                                ) runs on ImsComponent {
        // Local variables
        
        // Test control
        f_init_userprofile(c_userProfile_UE1atSUThome);
        f_initSipUrl(c_serviceProfile_EMERGENCY);
        f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
        
        // Test component configuration
        
        // Test adapter configuration
        
        // Preamble
        f_IMS_preamble_woRegistration(p_cSeq_s)
        LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
        f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success);
        
        // test body
        f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri));
        f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq));
        f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
        
        // Postamble
        
      } // End of function f_TC_PSAP_SIP_INVITE_BV_01_taker
      
    } // End of group f_TC_PSAP_SIP_INVITE_BV_01 
    
  } // End of group pasp_role 
  
} // End of module AtsNg112_TestCases 
+1 −6
Original line number Diff line number Diff line
@@ -59,12 +59,7 @@ module AtsNg112_TestControl {
    }
    if (PICS_ESRP_IUT) {
      if (PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1) {
        if (PICS_L_FIS_GEO1) { 
          execute(TC_ESRP_SIP_INVITE_BV_01(v_cSeq)); 
          if (PICS_E_SIP_HDR1) {
            execute(TC_ESRP_SIP_INVITE_BV_02(v_cSeq)); 
          }
       }
        if (PICS_L_FIS_GEO1) { execute(TC_ESRP_SIP_INVITE_BV_01(v_cSeq)); }
      }
    }
  } // End of 'control' statement
Loading