Loading ccsrc/Protocols/Sip/sip_codec_headers.cc +22 −23 Original line number Original line Diff line number Diff line Loading @@ -14,14 +14,14 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // From // From osip_from_t* from_header = nullptr; osip_from_t* from_header = nullptr; if (encode_from_header(p_msg_header.fromField(), &from_header) == -1) { if (encode_from_header(p_msg_header.fromField(), &from_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode From header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode From header"); return -1; return -1; } } char* hvalue; char* hvalue; ::osip_from_to_str(from_header, &hvalue); ::osip_from_to_str(from_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: From:%s", hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: From:%s", hvalue); if (::osip_message_set_from(p_sip_message, hvalue) != OSIP_SUCCESS) { if (::osip_message_set_from(p_sip_message, hvalue) != OSIP_SUCCESS) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to set From header in sip_message"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to set From header in sip_message"); return -1; return -1; } } Loading @@ -31,13 +31,13 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // To // To osip_to_t* to_header = nullptr; osip_to_t* to_header = nullptr; if (encode_to_header(p_msg_header.toField(), &to_header) == -1) { if (encode_to_header(p_msg_header.toField(), &to_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode To header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode To header"); return -1; return -1; } } int r = ::osip_to_to_str(to_header, &hvalue); int r = ::osip_to_to_str(to_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: To:'%s'- result:%d", hvalue, r); loggers::get_instance().log("sip_codec_headers::encode_headers: To:'%s'- result:%d", hvalue, r); if (::osip_message_set_to(p_sip_message, hvalue) != OSIP_SUCCESS) { if (::osip_message_set_to(p_sip_message, hvalue) != OSIP_SUCCESS) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to set To header in sip_message"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to set To header in sip_message"); return -1; return -1; } } ::osip_to_free(to_header); ::osip_to_free(to_header); Loading @@ -46,13 +46,13 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Via // Via osip_via_t* via_header = nullptr; osip_via_t* via_header = nullptr; if (encode_via_header(p_msg_header.via(), &via_header) == -1) { if (encode_via_header(p_msg_header.via(), &via_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Via header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Via header"); return -1; return -1; } } ::osip_via_to_str(via_header, &hvalue); ::osip_via_to_str(via_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: Via:%s", hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: Via:%s", hvalue); std::string str(hvalue); std::string str(hvalue); std::size_t idx = str.find(" ()"); // FIXME Horrible work-around for osip_via_to_str issue (' ()' added sometimes std::size_t idx = str.find(" ("); // FIXME Horrible work-around for osip_via_to_str issue (' ()' added sometimes if (idx != std::string::npos) { if (idx != std::string::npos) { str = str.substr(0, idx); str = str.substr(0, idx); } } Loading @@ -70,7 +70,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Accept // Accept if (p_msg_header.accept().is_present()) { if (p_msg_header.accept().is_present()) { if (encode_accept_header(p_msg_header.accept(), &p_sip_message) == -1) { if (encode_accept_header(p_msg_header.accept(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Accept header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Accept header"); return -1; return -1; } } } } Loading @@ -78,7 +78,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // AcceptContact // AcceptContact if (p_msg_header.acceptContact().is_present()) { if (p_msg_header.acceptContact().is_present()) { if (encode_accept_contact_header(p_msg_header.acceptContact(), &p_sip_message) == -1) { if (encode_accept_contact_header(p_msg_header.acceptContact(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode AcceptContact header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode AcceptContact header"); return -1; return -1; } } } } Loading @@ -86,7 +86,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Allow // Allow if (p_msg_header.allow().is_present()) { if (p_msg_header.allow().is_present()) { if (encode_allow_header(p_msg_header.allow(), &p_sip_message) == -1) { if (encode_allow_header(p_msg_header.allow(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Allow header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Allow header"); return -1; return -1; } } } } Loading @@ -95,7 +95,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.authorization().is_present()) { if (p_msg_header.authorization().is_present()) { osip_authorization_t* authorization_header = nullptr; osip_authorization_t* authorization_header = nullptr; if (encode_authorization_header(p_msg_header.authorization(), &authorization_header) == -1) { if (encode_authorization_header(p_msg_header.authorization(), &authorization_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Authorization header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Authorization header"); return -1; return -1; } } int result = ::osip_authorization_to_str(authorization_header, &hvalue); int result = ::osip_authorization_to_str(authorization_header, &hvalue); Loading @@ -110,7 +110,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.callId().is_present()) { if (p_msg_header.callId().is_present()) { osip_call_id_t* call_id_header; osip_call_id_t* call_id_header; if (encode_call_id_header(p_msg_header.callId(), &call_id_header) == -1) { if (encode_call_id_header(p_msg_header.callId(), &call_id_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Call_Id header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Call_Id header"); return -1; return -1; } } ::osip_call_id_to_str(call_id_header, &hvalue); ::osip_call_id_to_str(call_id_header, &hvalue); Loading @@ -125,7 +125,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.contact().is_present()) { if (p_msg_header.contact().is_present()) { osip_contact_t* contact_header; osip_contact_t* contact_header; if (encode_contact_header(p_msg_header.contact(), &contact_header) == -1) { if (encode_contact_header(p_msg_header.contact(), &contact_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Contact header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Contact header"); return -1; return -1; } } ::osip_contact_to_str(contact_header, &hvalue); ::osip_contact_to_str(contact_header, &hvalue); Loading @@ -139,7 +139,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // ContentLength // ContentLength osip_content_length_t* content_length_header = nullptr; osip_content_length_t* content_length_header = nullptr; if (encode_content_length_header(p_msg_header.contentLength(), &content_length_header) == -1) { if (encode_content_length_header(p_msg_header.contentLength(), &content_length_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode ContentLength header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode ContentLength header"); return -1; return -1; } } ::osip_content_length_to_str(content_length_header, &hvalue); ::osip_content_length_to_str(content_length_header, &hvalue); Loading @@ -152,7 +152,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.contentType().is_present()) { if (p_msg_header.contentType().is_present()) { osip_content_type_t* content_type_header = nullptr; osip_content_type_t* content_type_header = nullptr; if (encode_content_type_header(p_msg_header.contentType(), &content_type_header) == -1) { if (encode_content_type_header(p_msg_header.contentType(), &content_type_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode ContentType header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode ContentType header"); return -1; return -1; } } ::osip_content_type_to_str(content_type_header, &hvalue); ::osip_content_type_to_str(content_type_header, &hvalue); Loading @@ -165,7 +165,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // CSeq // CSeq osip_cseq_t* cseq_header = nullptr; osip_cseq_t* cseq_header = nullptr; if (encode_c_seq_header(p_msg_header.cSeq(), &cseq_header) == -1) { if (encode_c_seq_header(p_msg_header.cSeq(), &cseq_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode CSeq header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode CSeq header"); return -1; return -1; } } ::osip_cseq_to_str(cseq_header, &hvalue); ::osip_cseq_to_str(cseq_header, &hvalue); Loading @@ -177,7 +177,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // MaxForwards // MaxForwards if (p_msg_header.maxForwards().is_present()) { if (p_msg_header.maxForwards().is_present()) { if (encode_max_forwards_header(p_msg_header.maxForwards(), &p_sip_message) == -1) { if (encode_max_forwards_header(p_msg_header.maxForwards(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode MaxForwards header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode MaxForwards header"); return -1; return -1; } } } } Loading @@ -185,7 +185,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // MinSE // MinSE if (p_msg_header.minSE().is_present()) { if (p_msg_header.minSE().is_present()) { if (encode_min_se_header(p_msg_header.minSE(), &p_sip_message) == -1) { if (encode_min_se_header(p_msg_header.minSE(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode MinSE header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode MinSE header"); return -1; return -1; } } } } Loading @@ -193,7 +193,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // PAccessNetworkInfo // PAccessNetworkInfo if (p_msg_header.pAccessNetworkInfo().is_present()) { if (p_msg_header.pAccessNetworkInfo().is_present()) { if (encode_p_access_network_info_header(p_msg_header.pAccessNetworkInfo(), &p_sip_message) == -1) { if (encode_p_access_network_info_header(p_msg_header.pAccessNetworkInfo(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode PAccessNetworkInfo header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode PAccessNetworkInfo header"); return -1; return -1; } } } } Loading @@ -201,7 +201,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // RSeq // RSeq if (p_msg_header.rSeq().is_present()) { if (p_msg_header.rSeq().is_present()) { if (encode_r_seq_header(p_msg_header.rSeq(), &p_sip_message) == -1) { if (encode_r_seq_header(p_msg_header.rSeq(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode RSeq header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode RSeq header"); return -1; return -1; } } } } Loading @@ -209,7 +209,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Supported // Supported if (p_msg_header.supported().is_present()) { if (p_msg_header.supported().is_present()) { if (encode_supported_header(p_msg_header.supported(), &p_sip_message) == -1) { if (encode_supported_header(p_msg_header.supported(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Supported header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Supported header"); return -1; return -1; } } } } Loading @@ -217,7 +217,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // UserAgent // UserAgent if (p_msg_header.userAgent().is_present()) { if (p_msg_header.userAgent().is_present()) { if (encode_user_agent_header(p_msg_header.userAgent(), &p_sip_message) == -1) { if (encode_user_agent_header(p_msg_header.userAgent(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode UserAgent header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode UserAgent header"); return -1; return -1; } } } } Loading Loading @@ -1243,9 +1243,8 @@ int sip_codec_headers::encode_via_header(const LibSip__SIPTypesAndValues::Via& p const LibSip__SIPTypesAndValues::ViaBody v = l[i]; const LibSip__SIPTypesAndValues::ViaBody v = l[i]; loggers::get_instance().log_msg("sip_codec_headers::encode_via_header: Processing ", v); loggers::get_instance().log_msg("sip_codec_headers::encode_via_header: Processing ", v); ::via_set_protocol(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().protocolName()))); ::via_set_protocol(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().transport()))); ::via_set_version(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().protocolVersion()))); ::via_set_version(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().protocolVersion()))); ::via_set_comment(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().transport()))); std::string host; std::string host; std::string port; std::string port; encode_host_port(v.sentBy(), host, port); encode_host_port(v.sentBy(), host, port); Loading ccsrc/Protocols/Sip/sip_codec_message_body.cc +53 −11 Original line number Original line Diff line number Diff line Loading @@ -116,7 +116,6 @@ int sip_codec_message_body::encode_sdp(const LibSip__SDPTypes::SDP__Message& p_s } // End of 'for' statement } // End of 'for' statement } } } // End of 'for' statement } // End of 'for' statement // Encode optional fields // Encode optional fields // email, e // email, e loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: emails: ", p_sdp_message.emails()); loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: emails: ", p_sdp_message.emails()); Loading Loading @@ -300,7 +299,7 @@ int sip_codec_message_body::encode_sdp(const LibSip__SDPTypes::SDP__Message& p_s } // End of 'for' statement } // End of 'for' statement } } // Bandwith, b // Bandwith, b loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: Bandwith: ", p_sdp_message.bandwidth()); loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: Bandwidth: ", p_sdp_message.bandwidth()); if (p_sdp_message.bandwidth().is_present()) { if (p_sdp_message.bandwidth().is_present()) { const LibSip__SDPTypes::SDP__bandwidth__list& l = static_cast<const LibSip__SDPTypes::SDP__bandwidth__list&>(*p_sdp_message.bandwidth().get_opt_value()); const LibSip__SDPTypes::SDP__bandwidth__list& l = static_cast<const LibSip__SDPTypes::SDP__bandwidth__list&>(*p_sdp_message.bandwidth().get_opt_value()); int i = 0; int i = 0; Loading @@ -310,6 +309,12 @@ int sip_codec_message_body::encode_sdp(const LibSip__SDPTypes::SDP__Message& p_s ::sdp_message_b_bandwidth_add(*p_sdp_body, i, (char*)::strdup(static_cast<const char*>(b.modifier())), (char*)::strdup(std::to_string(b.bandwidth()).c_str())); ::sdp_message_b_bandwidth_add(*p_sdp_body, i, (char*)::strdup(static_cast<const char*>(b.modifier())), (char*)::strdup(std::to_string(b.bandwidth()).c_str())); } // End of 'for' statement } // End of 'for' statement } } // Connection, c loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: Connection: ", p_sdp_message.connection()); if (p_sdp_message.connection().is_present()) { const LibSip__SDPTypes::SDP__connection& c = static_cast<const LibSip__SDPTypes::SDP__connection&>(*p_sdp_message.connection().get_opt_value()); ::sdp_message_c_connection_add(*p_sdp_body, 0, ::strdup(static_cast<const char*>(c.net__type())), ::strdup(static_cast<const char*>(c.addr__type())), ::strdup(static_cast<const char*>(c.conn__addr().addr())), nullptr, nullptr); } // TODO To be continued // TODO To be continued loggers::get_instance().log("<<< sip_codec_message_body::encode_sdp"); loggers::get_instance().log("<<< sip_codec_message_body::encode_sdp"); Loading @@ -332,7 +337,7 @@ void sip_codec_message_body::decode_message_body(const osip_message_t* p_sip_mes osip_body_t* body; osip_body_t* body; int result = ::osip_message_get_body(p_sip_message, 0, &body); int result = ::osip_message_get_body(p_sip_message, 0, &body); if (result != 0) { if (result != 0) { loggers::get_instance().warning("sip_codec_message_body::decode_message_body: Failded to retrieve body"); loggers::get_instance().warning("sip_codec_message_body::decode_message_body: Failed to retrieve body"); p_message_body.set_to_omit(); p_message_body.set_to_omit(); return; return; } } Loading Loading @@ -367,14 +372,33 @@ void sip_codec_message_body::decode_message_body(const osip_message_t* p_sip_mes p.content__type() = CHARSTRING("sdp"); p.content__type() = CHARSTRING("sdp"); p.content__disposition().set_to_omit(); p.content__disposition().set_to_omit(); p.content__id().set_to_omit(); p.content__id().set_to_omit(); LibSip__SDPTypes::SDP__Message sdp_header; LibSip__SDPTypes::SDP__Message sdp_body; osip_body_t* body; osip_body_t* body; ::osip_body_init(&body); ::osip_body_init(&body); body->body = ::strdup(header->hname); body->body = ::strdup(header->hname); // TODO Check if strdup is needed body->length = strlen(header->hname); body->length = strlen(header->hname); LibSip__MessageBodyTypes::MIME__Encapsulated__Parts& parts = p.mime__encapsulated__part(); LibSip__MessageBodyTypes::MIME__Encapsulated__Parts& parts = p.mime__encapsulated__part(); if (decode_sdp(body, sdp_header) == 0) { if (decode_sdp(body, sdp_body) == 0) { parts.sdpMessageBody() = sdp_header; parts.sdpMessageBody() = sdp_body; } else { parts.msdBody() = char2oct(CHARSTRING(header->hname)); } ::osip_body_free(body); l[pos] = p; } else if ((*header->hname == '<') && (*(header->hname + 1) == '?') && (*(header->hname + 2) == 'x')) { // <?xml loggers::get_instance().log("sip_codec_message_body::decode_message_body: Decode XML"); LibSip__MessageBodyTypes::MIME__Encapsulated__Part p; p.content__type() = CHARSTRING("xml"); p.content__disposition().set_to_omit(); p.content__id().set_to_omit(); LibSip__XMLTypes::XmlBody xml_body; osip_body_t* body; ::osip_body_init(&body); body->body = header->hname; body->length = strlen(header->hname); LibSip__MessageBodyTypes::MIME__Encapsulated__Parts& parts = p.mime__encapsulated__part(); if (decode_xml(body, xml_body) == 0) { parts.xmlBody() = xml_body; } else { } else { parts.msdBody() = char2oct(CHARSTRING(header->hname)); parts.msdBody() = char2oct(CHARSTRING(header->hname)); } } Loading @@ -382,15 +406,16 @@ void sip_codec_message_body::decode_message_body(const osip_message_t* p_sip_mes l[pos] = p; l[pos] = p; } else { } else { // TODO // TODO loggers::get_instance().error("sip_codec_message_body::decode_message_body: Not implemented yet"); } } } // End of 'while' statement } // End of 'while' statement msg_body.mimeMessageBody() = mime; msg_body.mimeMessageBody() = mime; } } } else if ((std::string(content_type->type).compare("application") == 0) && (std::string(content_type->subtype).compare("sdp") == 0)) { } else if ((std::string(content_type->type).compare("application") == 0) && (std::string(content_type->subtype).compare("sdp") == 0)) { LibSip__SDPTypes::SDP__Message sdp_header; LibSip__SDPTypes::SDP__Message sdp_body; if (decode_sdp(body, sdp_header) == 0) { if (decode_sdp(body, sdp_body) == 0) { // Set message body // Set message body msg_body.sdpMessageBody() = sdp_header; msg_body.sdpMessageBody() = sdp_body; } else { } else { loggers::get_instance().warning("sip_codec_message_body::decode_message_body: sdp_message_parse failed, fallback to textplain"); loggers::get_instance().warning("sip_codec_message_body::decode_message_body: sdp_message_parse failed, fallback to textplain"); msg_body.textplain() = CHARSTRING(body->body); msg_body.textplain() = CHARSTRING(body->body); Loading Loading @@ -651,3 +676,20 @@ int sip_codec_message_body::decode_sdp(const osip_body_t* p_body, LibSip__SDPTyp loggers::get_instance().log_msg("<<< sip_codec_message_body::decode_sdp: sdp: ", p_sdp_header); loggers::get_instance().log_msg("<<< sip_codec_message_body::decode_sdp: sdp: ", p_sdp_header); return 0; return 0; } } int sip_codec_message_body::encode_xml(const LibSip__XMLTypes::XmlBody& p_message_body, sdp_message_t** p_xml_header) { loggers::get_instance().log_msg(">>> sip_codec_message_body::encode_xml: ", p_message_body); loggers::get_instance().log("<<< sip_codec_message_body::encode_xml"); return 0; } int sip_codec_message_body::decode_xml(const osip_body_t* p_body, LibSip__XMLTypes::XmlBody& p_xml_header) { loggers::get_instance().log(">>> sip_codec_message_body::decode_xml: %s", p_body->body); loggers::get_instance().log_msg("<<< sip_codec_message_body::decode_xml: xml: ", p_xml_header); return 0; } ccsrc/Protocols/Sip/sip_codec_message_body.hh +10 −0 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,14 @@ namespace LibSip__MessageBodyTypes { class MessageBody; class MessageBody; } } namespace LibSip__SDPTypes { class SDP__Messag; } namespace LibSip__XMLTypes { class XmlBody; } class sip_codec_message_body: public codec < class sip_codec_message_body: public codec < LibSip__MessageBodyTypes::MessageBody, LibSip__MessageBodyTypes::MessageBody, LibSip__MessageBodyTypes::MessageBody> LibSip__MessageBodyTypes::MessageBody> Loading @@ -27,5 +35,7 @@ public: private: private: int encode_sdp(const LibSip__SDPTypes::SDP__Message& p_message_body, sdp_message_t** p_sdp_body); int encode_sdp(const LibSip__SDPTypes::SDP__Message& p_message_body, sdp_message_t** p_sdp_body); int decode_sdp(const osip_body_t* p_body, LibSip__SDPTypes::SDP__Message& p_sdp_header); int decode_sdp(const osip_body_t* p_body, LibSip__SDPTypes::SDP__Message& p_sdp_header); int encode_xml(const LibSip__XMLTypes::XmlBody& p_message_body, sdp_message_t** p_xml_header); int decode_xml(const osip_body_t* p_body, LibSip__XMLTypes::XmlBody& p_xml_header); }; // End of class sip_codec_message_body }; // End of class sip_codec_message_body etc/AtsNg112/AtsNg112.cfg +14 −16 Original line number Original line Diff line number Diff line Loading @@ -3,7 +3,7 @@ # IUT roles # IUT roles LibNg112_Pics.PICS_LIS_IUT := false; LibNg112_Pics.PICS_LIS_IUT := false; LibNg112_Pics.PICS_ECRF_IUT := true; LibNg112_Pics.PICS_ECRF_IUT := false; LibNg112_Pics.PICS_ESRP_IUT := false; LibNg112_Pics.PICS_ESRP_IUT := false; LibNg112_Pics.PICS_PSAP_IUT := true; LibNg112_Pics.PICS_PSAP_IUT := true; Loading @@ -14,12 +14,17 @@ LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; #LibItsHttp_Pics.PICS_HEADER_HOST := "lis.gridgears.io" # Used for LIS #LibItsHttp_Pics.PICS_HEADER_HOST := "lis.gridgears.io" # Used for LIS LibItsHttp_Pics.PICS_HEADER_HOST := "ecrf.gridgears.io" # Used for ECRF LibItsHttp_Pics.PICS_HEADER_HOST := "ecrf.gridgears.io" # Used for ECRF #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8"; #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8"; LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" #LibNg112_Pics.PICS_HTTP_GET_REQUEST := false #LibNg112_Pics.PICS_HTTP_GET_REQUEST := false #LibNg112_Pics.PICS_HTTP_POST_REQUEST := false #LibNg112_Pics.PICS_HTTP_POST_REQUEST := false LibNg112_Pixits.PX_IMS_TS_UE1_IPADDR := "10.101.242.1" # Local UE address LibNg112_Pixits.PX_IMS_SUT_UE1_BEARER_IPADDR := "10.101.242.1" # Local UE address [LOGGING] [LOGGING] # In this section you can specify the name of the log file and the classes of events # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). # you want to log into the file or display on console (standard error). Loading @@ -37,20 +42,13 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. # In this section you can specify parameters that are passed to Test Ports. # LIS # LIS/ECRF system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=lis.gridgears.io,use_ssl=1)" system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=lis.gridgears.io,use_ssl=1)" # ECRF #system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ecrf.gridgears.io,use_ssl=1)" # SIP # SIP <<<<<<< HEAD Caller.SIPP.params := "SIP/UDP(dst_ip=172.24.1.115,dst_port=5060,src_port=5060)" Caller.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" Ecrf.SIPP.params := "SIP/UDP(dst_ip=172.24.1,240,dst_port=5060,src_port=5060)" Psap.SIPP.params := "SIP/UDP(dst_ip=172.24.1.11,dst_port=5060,src_port=5060)" CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" ======= Caller.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5060)" Psap.SIPP.params := "SIP/UDP(dst_ip=192.168.43.4,dst_port=5060,src_port=5061)" CallTaker.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5062)" >>>>>>> 562f4f47b07fa346377cb114653e2c987657dfc8 [DEFINE] [DEFINE] # In this section you can create macro definitions, # In this section you can create macro definitions, Loading @@ -75,7 +73,7 @@ CallTaker.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5062 [EXECUTE] [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. # In this section you can specify what parts of your test suite you want to execute. #AtsNg112_TestControl.control AtsNg112_TestControl.control #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 Loading @@ -91,7 +89,7 @@ CallTaker.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5062 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 Loading etc/TestCodec/TestCodec.cfg +2 −2 Original line number Original line Diff line number Diff line Loading @@ -58,13 +58,13 @@ system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json #TestCodec_Invite.tc_invite_request_1 #TestCodec_Invite.tc_invite_request_1 #TestCodec_Invite.tc_invite_request_2 #TestCodec_Invite.tc_invite_request_2 #TestCodec_Invite.tc_invite_request_3 #TestCodec_Invite.tc_invite_request_3 TestCodec_Invite.tc_invite_request_4 #TestCodec_Invite.tc_invite_request_4 #TestCodec_Responses.tc_100_trying_1 #TestCodec_Responses.tc_100_trying_1 #TestCodec_Responses.tc_180_ringing_1 #TestCodec_Responses.tc_180_ringing_1 #TestCodec_HttpRequest.tc_http_get_1 #TestCodec_HttpRequest.tc_http_get_1 #TestCodec_HttpResponse.tc_http_200_ok_1 #TestCodec_HttpResponse.tc_http_200_ok_1 #TestCodec_HttpPort.tc_http_map_1 #TestCodec_HttpPort.tc_http_map_1 #TestCodec_Xsd.tc_linear_ring_1 TestCodec_Xsd.tc_linear_ring_1 #TestCodec_Xsd.tc_test_vendor_response_1 #TestCodec_Xsd.tc_test_vendor_response_1 #TestCodec_Xsd.tc_test_vendor_response_2 #TestCodec_Xsd.tc_test_vendor_response_2 Loading Loading
ccsrc/Protocols/Sip/sip_codec_headers.cc +22 −23 Original line number Original line Diff line number Diff line Loading @@ -14,14 +14,14 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // From // From osip_from_t* from_header = nullptr; osip_from_t* from_header = nullptr; if (encode_from_header(p_msg_header.fromField(), &from_header) == -1) { if (encode_from_header(p_msg_header.fromField(), &from_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode From header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode From header"); return -1; return -1; } } char* hvalue; char* hvalue; ::osip_from_to_str(from_header, &hvalue); ::osip_from_to_str(from_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: From:%s", hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: From:%s", hvalue); if (::osip_message_set_from(p_sip_message, hvalue) != OSIP_SUCCESS) { if (::osip_message_set_from(p_sip_message, hvalue) != OSIP_SUCCESS) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to set From header in sip_message"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to set From header in sip_message"); return -1; return -1; } } Loading @@ -31,13 +31,13 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // To // To osip_to_t* to_header = nullptr; osip_to_t* to_header = nullptr; if (encode_to_header(p_msg_header.toField(), &to_header) == -1) { if (encode_to_header(p_msg_header.toField(), &to_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode To header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode To header"); return -1; return -1; } } int r = ::osip_to_to_str(to_header, &hvalue); int r = ::osip_to_to_str(to_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: To:'%s'- result:%d", hvalue, r); loggers::get_instance().log("sip_codec_headers::encode_headers: To:'%s'- result:%d", hvalue, r); if (::osip_message_set_to(p_sip_message, hvalue) != OSIP_SUCCESS) { if (::osip_message_set_to(p_sip_message, hvalue) != OSIP_SUCCESS) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to set To header in sip_message"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to set To header in sip_message"); return -1; return -1; } } ::osip_to_free(to_header); ::osip_to_free(to_header); Loading @@ -46,13 +46,13 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Via // Via osip_via_t* via_header = nullptr; osip_via_t* via_header = nullptr; if (encode_via_header(p_msg_header.via(), &via_header) == -1) { if (encode_via_header(p_msg_header.via(), &via_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Via header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Via header"); return -1; return -1; } } ::osip_via_to_str(via_header, &hvalue); ::osip_via_to_str(via_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: Via:%s", hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: Via:%s", hvalue); std::string str(hvalue); std::string str(hvalue); std::size_t idx = str.find(" ()"); // FIXME Horrible work-around for osip_via_to_str issue (' ()' added sometimes std::size_t idx = str.find(" ("); // FIXME Horrible work-around for osip_via_to_str issue (' ()' added sometimes if (idx != std::string::npos) { if (idx != std::string::npos) { str = str.substr(0, idx); str = str.substr(0, idx); } } Loading @@ -70,7 +70,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Accept // Accept if (p_msg_header.accept().is_present()) { if (p_msg_header.accept().is_present()) { if (encode_accept_header(p_msg_header.accept(), &p_sip_message) == -1) { if (encode_accept_header(p_msg_header.accept(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Accept header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Accept header"); return -1; return -1; } } } } Loading @@ -78,7 +78,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // AcceptContact // AcceptContact if (p_msg_header.acceptContact().is_present()) { if (p_msg_header.acceptContact().is_present()) { if (encode_accept_contact_header(p_msg_header.acceptContact(), &p_sip_message) == -1) { if (encode_accept_contact_header(p_msg_header.acceptContact(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode AcceptContact header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode AcceptContact header"); return -1; return -1; } } } } Loading @@ -86,7 +86,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Allow // Allow if (p_msg_header.allow().is_present()) { if (p_msg_header.allow().is_present()) { if (encode_allow_header(p_msg_header.allow(), &p_sip_message) == -1) { if (encode_allow_header(p_msg_header.allow(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Allow header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Allow header"); return -1; return -1; } } } } Loading @@ -95,7 +95,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.authorization().is_present()) { if (p_msg_header.authorization().is_present()) { osip_authorization_t* authorization_header = nullptr; osip_authorization_t* authorization_header = nullptr; if (encode_authorization_header(p_msg_header.authorization(), &authorization_header) == -1) { if (encode_authorization_header(p_msg_header.authorization(), &authorization_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Authorization header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Authorization header"); return -1; return -1; } } int result = ::osip_authorization_to_str(authorization_header, &hvalue); int result = ::osip_authorization_to_str(authorization_header, &hvalue); Loading @@ -110,7 +110,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.callId().is_present()) { if (p_msg_header.callId().is_present()) { osip_call_id_t* call_id_header; osip_call_id_t* call_id_header; if (encode_call_id_header(p_msg_header.callId(), &call_id_header) == -1) { if (encode_call_id_header(p_msg_header.callId(), &call_id_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Call_Id header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Call_Id header"); return -1; return -1; } } ::osip_call_id_to_str(call_id_header, &hvalue); ::osip_call_id_to_str(call_id_header, &hvalue); Loading @@ -125,7 +125,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.contact().is_present()) { if (p_msg_header.contact().is_present()) { osip_contact_t* contact_header; osip_contact_t* contact_header; if (encode_contact_header(p_msg_header.contact(), &contact_header) == -1) { if (encode_contact_header(p_msg_header.contact(), &contact_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Contact header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Contact header"); return -1; return -1; } } ::osip_contact_to_str(contact_header, &hvalue); ::osip_contact_to_str(contact_header, &hvalue); Loading @@ -139,7 +139,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // ContentLength // ContentLength osip_content_length_t* content_length_header = nullptr; osip_content_length_t* content_length_header = nullptr; if (encode_content_length_header(p_msg_header.contentLength(), &content_length_header) == -1) { if (encode_content_length_header(p_msg_header.contentLength(), &content_length_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode ContentLength header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode ContentLength header"); return -1; return -1; } } ::osip_content_length_to_str(content_length_header, &hvalue); ::osip_content_length_to_str(content_length_header, &hvalue); Loading @@ -152,7 +152,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe if (p_msg_header.contentType().is_present()) { if (p_msg_header.contentType().is_present()) { osip_content_type_t* content_type_header = nullptr; osip_content_type_t* content_type_header = nullptr; if (encode_content_type_header(p_msg_header.contentType(), &content_type_header) == -1) { if (encode_content_type_header(p_msg_header.contentType(), &content_type_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode ContentType header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode ContentType header"); return -1; return -1; } } ::osip_content_type_to_str(content_type_header, &hvalue); ::osip_content_type_to_str(content_type_header, &hvalue); Loading @@ -165,7 +165,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // CSeq // CSeq osip_cseq_t* cseq_header = nullptr; osip_cseq_t* cseq_header = nullptr; if (encode_c_seq_header(p_msg_header.cSeq(), &cseq_header) == -1) { if (encode_c_seq_header(p_msg_header.cSeq(), &cseq_header) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode CSeq header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode CSeq header"); return -1; return -1; } } ::osip_cseq_to_str(cseq_header, &hvalue); ::osip_cseq_to_str(cseq_header, &hvalue); Loading @@ -177,7 +177,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // MaxForwards // MaxForwards if (p_msg_header.maxForwards().is_present()) { if (p_msg_header.maxForwards().is_present()) { if (encode_max_forwards_header(p_msg_header.maxForwards(), &p_sip_message) == -1) { if (encode_max_forwards_header(p_msg_header.maxForwards(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode MaxForwards header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode MaxForwards header"); return -1; return -1; } } } } Loading @@ -185,7 +185,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // MinSE // MinSE if (p_msg_header.minSE().is_present()) { if (p_msg_header.minSE().is_present()) { if (encode_min_se_header(p_msg_header.minSE(), &p_sip_message) == -1) { if (encode_min_se_header(p_msg_header.minSE(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode MinSE header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode MinSE header"); return -1; return -1; } } } } Loading @@ -193,7 +193,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // PAccessNetworkInfo // PAccessNetworkInfo if (p_msg_header.pAccessNetworkInfo().is_present()) { if (p_msg_header.pAccessNetworkInfo().is_present()) { if (encode_p_access_network_info_header(p_msg_header.pAccessNetworkInfo(), &p_sip_message) == -1) { if (encode_p_access_network_info_header(p_msg_header.pAccessNetworkInfo(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode PAccessNetworkInfo header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode PAccessNetworkInfo header"); return -1; return -1; } } } } Loading @@ -201,7 +201,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // RSeq // RSeq if (p_msg_header.rSeq().is_present()) { if (p_msg_header.rSeq().is_present()) { if (encode_r_seq_header(p_msg_header.rSeq(), &p_sip_message) == -1) { if (encode_r_seq_header(p_msg_header.rSeq(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode RSeq header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode RSeq header"); return -1; return -1; } } } } Loading @@ -209,7 +209,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // Supported // Supported if (p_msg_header.supported().is_present()) { if (p_msg_header.supported().is_present()) { if (encode_supported_header(p_msg_header.supported(), &p_sip_message) == -1) { if (encode_supported_header(p_msg_header.supported(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode Supported header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Supported header"); return -1; return -1; } } } } Loading @@ -217,7 +217,7 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe // UserAgent // UserAgent if (p_msg_header.userAgent().is_present()) { if (p_msg_header.userAgent().is_present()) { if (encode_user_agent_header(p_msg_header.userAgent(), &p_sip_message) == -1) { if (encode_user_agent_header(p_msg_header.userAgent(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Faile to encode UserAgent header"); loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode UserAgent header"); return -1; return -1; } } } } Loading Loading @@ -1243,9 +1243,8 @@ int sip_codec_headers::encode_via_header(const LibSip__SIPTypesAndValues::Via& p const LibSip__SIPTypesAndValues::ViaBody v = l[i]; const LibSip__SIPTypesAndValues::ViaBody v = l[i]; loggers::get_instance().log_msg("sip_codec_headers::encode_via_header: Processing ", v); loggers::get_instance().log_msg("sip_codec_headers::encode_via_header: Processing ", v); ::via_set_protocol(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().protocolName()))); ::via_set_protocol(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().transport()))); ::via_set_version(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().protocolVersion()))); ::via_set_version(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().protocolVersion()))); ::via_set_comment(*p_via_header, (char*)::strdup(static_cast<const char *>(v.sentProtocol().transport()))); std::string host; std::string host; std::string port; std::string port; encode_host_port(v.sentBy(), host, port); encode_host_port(v.sentBy(), host, port); Loading
ccsrc/Protocols/Sip/sip_codec_message_body.cc +53 −11 Original line number Original line Diff line number Diff line Loading @@ -116,7 +116,6 @@ int sip_codec_message_body::encode_sdp(const LibSip__SDPTypes::SDP__Message& p_s } // End of 'for' statement } // End of 'for' statement } } } // End of 'for' statement } // End of 'for' statement // Encode optional fields // Encode optional fields // email, e // email, e loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: emails: ", p_sdp_message.emails()); loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: emails: ", p_sdp_message.emails()); Loading Loading @@ -300,7 +299,7 @@ int sip_codec_message_body::encode_sdp(const LibSip__SDPTypes::SDP__Message& p_s } // End of 'for' statement } // End of 'for' statement } } // Bandwith, b // Bandwith, b loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: Bandwith: ", p_sdp_message.bandwidth()); loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: Bandwidth: ", p_sdp_message.bandwidth()); if (p_sdp_message.bandwidth().is_present()) { if (p_sdp_message.bandwidth().is_present()) { const LibSip__SDPTypes::SDP__bandwidth__list& l = static_cast<const LibSip__SDPTypes::SDP__bandwidth__list&>(*p_sdp_message.bandwidth().get_opt_value()); const LibSip__SDPTypes::SDP__bandwidth__list& l = static_cast<const LibSip__SDPTypes::SDP__bandwidth__list&>(*p_sdp_message.bandwidth().get_opt_value()); int i = 0; int i = 0; Loading @@ -310,6 +309,12 @@ int sip_codec_message_body::encode_sdp(const LibSip__SDPTypes::SDP__Message& p_s ::sdp_message_b_bandwidth_add(*p_sdp_body, i, (char*)::strdup(static_cast<const char*>(b.modifier())), (char*)::strdup(std::to_string(b.bandwidth()).c_str())); ::sdp_message_b_bandwidth_add(*p_sdp_body, i, (char*)::strdup(static_cast<const char*>(b.modifier())), (char*)::strdup(std::to_string(b.bandwidth()).c_str())); } // End of 'for' statement } // End of 'for' statement } } // Connection, c loggers::get_instance().log_msg("sip_codec_message_body::encode_sdp: Connection: ", p_sdp_message.connection()); if (p_sdp_message.connection().is_present()) { const LibSip__SDPTypes::SDP__connection& c = static_cast<const LibSip__SDPTypes::SDP__connection&>(*p_sdp_message.connection().get_opt_value()); ::sdp_message_c_connection_add(*p_sdp_body, 0, ::strdup(static_cast<const char*>(c.net__type())), ::strdup(static_cast<const char*>(c.addr__type())), ::strdup(static_cast<const char*>(c.conn__addr().addr())), nullptr, nullptr); } // TODO To be continued // TODO To be continued loggers::get_instance().log("<<< sip_codec_message_body::encode_sdp"); loggers::get_instance().log("<<< sip_codec_message_body::encode_sdp"); Loading @@ -332,7 +337,7 @@ void sip_codec_message_body::decode_message_body(const osip_message_t* p_sip_mes osip_body_t* body; osip_body_t* body; int result = ::osip_message_get_body(p_sip_message, 0, &body); int result = ::osip_message_get_body(p_sip_message, 0, &body); if (result != 0) { if (result != 0) { loggers::get_instance().warning("sip_codec_message_body::decode_message_body: Failded to retrieve body"); loggers::get_instance().warning("sip_codec_message_body::decode_message_body: Failed to retrieve body"); p_message_body.set_to_omit(); p_message_body.set_to_omit(); return; return; } } Loading Loading @@ -367,14 +372,33 @@ void sip_codec_message_body::decode_message_body(const osip_message_t* p_sip_mes p.content__type() = CHARSTRING("sdp"); p.content__type() = CHARSTRING("sdp"); p.content__disposition().set_to_omit(); p.content__disposition().set_to_omit(); p.content__id().set_to_omit(); p.content__id().set_to_omit(); LibSip__SDPTypes::SDP__Message sdp_header; LibSip__SDPTypes::SDP__Message sdp_body; osip_body_t* body; osip_body_t* body; ::osip_body_init(&body); ::osip_body_init(&body); body->body = ::strdup(header->hname); body->body = ::strdup(header->hname); // TODO Check if strdup is needed body->length = strlen(header->hname); body->length = strlen(header->hname); LibSip__MessageBodyTypes::MIME__Encapsulated__Parts& parts = p.mime__encapsulated__part(); LibSip__MessageBodyTypes::MIME__Encapsulated__Parts& parts = p.mime__encapsulated__part(); if (decode_sdp(body, sdp_header) == 0) { if (decode_sdp(body, sdp_body) == 0) { parts.sdpMessageBody() = sdp_header; parts.sdpMessageBody() = sdp_body; } else { parts.msdBody() = char2oct(CHARSTRING(header->hname)); } ::osip_body_free(body); l[pos] = p; } else if ((*header->hname == '<') && (*(header->hname + 1) == '?') && (*(header->hname + 2) == 'x')) { // <?xml loggers::get_instance().log("sip_codec_message_body::decode_message_body: Decode XML"); LibSip__MessageBodyTypes::MIME__Encapsulated__Part p; p.content__type() = CHARSTRING("xml"); p.content__disposition().set_to_omit(); p.content__id().set_to_omit(); LibSip__XMLTypes::XmlBody xml_body; osip_body_t* body; ::osip_body_init(&body); body->body = header->hname; body->length = strlen(header->hname); LibSip__MessageBodyTypes::MIME__Encapsulated__Parts& parts = p.mime__encapsulated__part(); if (decode_xml(body, xml_body) == 0) { parts.xmlBody() = xml_body; } else { } else { parts.msdBody() = char2oct(CHARSTRING(header->hname)); parts.msdBody() = char2oct(CHARSTRING(header->hname)); } } Loading @@ -382,15 +406,16 @@ void sip_codec_message_body::decode_message_body(const osip_message_t* p_sip_mes l[pos] = p; l[pos] = p; } else { } else { // TODO // TODO loggers::get_instance().error("sip_codec_message_body::decode_message_body: Not implemented yet"); } } } // End of 'while' statement } // End of 'while' statement msg_body.mimeMessageBody() = mime; msg_body.mimeMessageBody() = mime; } } } else if ((std::string(content_type->type).compare("application") == 0) && (std::string(content_type->subtype).compare("sdp") == 0)) { } else if ((std::string(content_type->type).compare("application") == 0) && (std::string(content_type->subtype).compare("sdp") == 0)) { LibSip__SDPTypes::SDP__Message sdp_header; LibSip__SDPTypes::SDP__Message sdp_body; if (decode_sdp(body, sdp_header) == 0) { if (decode_sdp(body, sdp_body) == 0) { // Set message body // Set message body msg_body.sdpMessageBody() = sdp_header; msg_body.sdpMessageBody() = sdp_body; } else { } else { loggers::get_instance().warning("sip_codec_message_body::decode_message_body: sdp_message_parse failed, fallback to textplain"); loggers::get_instance().warning("sip_codec_message_body::decode_message_body: sdp_message_parse failed, fallback to textplain"); msg_body.textplain() = CHARSTRING(body->body); msg_body.textplain() = CHARSTRING(body->body); Loading Loading @@ -651,3 +676,20 @@ int sip_codec_message_body::decode_sdp(const osip_body_t* p_body, LibSip__SDPTyp loggers::get_instance().log_msg("<<< sip_codec_message_body::decode_sdp: sdp: ", p_sdp_header); loggers::get_instance().log_msg("<<< sip_codec_message_body::decode_sdp: sdp: ", p_sdp_header); return 0; return 0; } } int sip_codec_message_body::encode_xml(const LibSip__XMLTypes::XmlBody& p_message_body, sdp_message_t** p_xml_header) { loggers::get_instance().log_msg(">>> sip_codec_message_body::encode_xml: ", p_message_body); loggers::get_instance().log("<<< sip_codec_message_body::encode_xml"); return 0; } int sip_codec_message_body::decode_xml(const osip_body_t* p_body, LibSip__XMLTypes::XmlBody& p_xml_header) { loggers::get_instance().log(">>> sip_codec_message_body::decode_xml: %s", p_body->body); loggers::get_instance().log_msg("<<< sip_codec_message_body::decode_xml: xml: ", p_xml_header); return 0; }
ccsrc/Protocols/Sip/sip_codec_message_body.hh +10 −0 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,14 @@ namespace LibSip__MessageBodyTypes { class MessageBody; class MessageBody; } } namespace LibSip__SDPTypes { class SDP__Messag; } namespace LibSip__XMLTypes { class XmlBody; } class sip_codec_message_body: public codec < class sip_codec_message_body: public codec < LibSip__MessageBodyTypes::MessageBody, LibSip__MessageBodyTypes::MessageBody, LibSip__MessageBodyTypes::MessageBody> LibSip__MessageBodyTypes::MessageBody> Loading @@ -27,5 +35,7 @@ public: private: private: int encode_sdp(const LibSip__SDPTypes::SDP__Message& p_message_body, sdp_message_t** p_sdp_body); int encode_sdp(const LibSip__SDPTypes::SDP__Message& p_message_body, sdp_message_t** p_sdp_body); int decode_sdp(const osip_body_t* p_body, LibSip__SDPTypes::SDP__Message& p_sdp_header); int decode_sdp(const osip_body_t* p_body, LibSip__SDPTypes::SDP__Message& p_sdp_header); int encode_xml(const LibSip__XMLTypes::XmlBody& p_message_body, sdp_message_t** p_xml_header); int decode_xml(const osip_body_t* p_body, LibSip__XMLTypes::XmlBody& p_xml_header); }; // End of class sip_codec_message_body }; // End of class sip_codec_message_body
etc/AtsNg112/AtsNg112.cfg +14 −16 Original line number Original line Diff line number Diff line Loading @@ -3,7 +3,7 @@ # IUT roles # IUT roles LibNg112_Pics.PICS_LIS_IUT := false; LibNg112_Pics.PICS_LIS_IUT := false; LibNg112_Pics.PICS_ECRF_IUT := true; LibNg112_Pics.PICS_ECRF_IUT := false; LibNg112_Pics.PICS_ESRP_IUT := false; LibNg112_Pics.PICS_ESRP_IUT := false; LibNg112_Pics.PICS_PSAP_IUT := true; LibNg112_Pics.PICS_PSAP_IUT := true; Loading @@ -14,12 +14,17 @@ LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; #LibItsHttp_Pics.PICS_HEADER_HOST := "lis.gridgears.io" # Used for LIS #LibItsHttp_Pics.PICS_HEADER_HOST := "lis.gridgears.io" # Used for LIS LibItsHttp_Pics.PICS_HEADER_HOST := "ecrf.gridgears.io" # Used for ECRF LibItsHttp_Pics.PICS_HEADER_HOST := "ecrf.gridgears.io" # Used for ECRF #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8"; #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8"; LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" #LibNg112_Pics.PICS_HTTP_GET_REQUEST := false #LibNg112_Pics.PICS_HTTP_GET_REQUEST := false #LibNg112_Pics.PICS_HTTP_POST_REQUEST := false #LibNg112_Pics.PICS_HTTP_POST_REQUEST := false LibNg112_Pixits.PX_IMS_TS_UE1_IPADDR := "10.101.242.1" # Local UE address LibNg112_Pixits.PX_IMS_SUT_UE1_BEARER_IPADDR := "10.101.242.1" # Local UE address [LOGGING] [LOGGING] # In this section you can specify the name of the log file and the classes of events # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). # you want to log into the file or display on console (standard error). Loading @@ -37,20 +42,13 @@ LogEventTypes:= Yes [TESTPORT_PARAMETERS] [TESTPORT_PARAMETERS] # In this section you can specify parameters that are passed to Test Ports. # In this section you can specify parameters that are passed to Test Ports. # LIS # LIS/ECRF system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=lis.gridgears.io,use_ssl=1)" system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=lis.gridgears.io,use_ssl=1)" # ECRF #system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ecrf.gridgears.io,use_ssl=1)" # SIP # SIP <<<<<<< HEAD Caller.SIPP.params := "SIP/UDP(dst_ip=172.24.1.115,dst_port=5060,src_port=5060)" Caller.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" Ecrf.SIPP.params := "SIP/UDP(dst_ip=172.24.1,240,dst_port=5060,src_port=5060)" Psap.SIPP.params := "SIP/UDP(dst_ip=172.24.1.11,dst_port=5060,src_port=5060)" CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" ======= Caller.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5060)" Psap.SIPP.params := "SIP/UDP(dst_ip=192.168.43.4,dst_port=5060,src_port=5061)" CallTaker.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5062)" >>>>>>> 562f4f47b07fa346377cb114653e2c987657dfc8 [DEFINE] [DEFINE] # In this section you can create macro definitions, # In this section you can create macro definitions, Loading @@ -75,7 +73,7 @@ CallTaker.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5062 [EXECUTE] [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. # In this section you can specify what parts of your test suite you want to execute. #AtsNg112_TestControl.control AtsNg112_TestControl.control #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 #AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 Loading @@ -91,7 +89,7 @@ CallTaker.SIPP.params := "SIP/UDP(dst_ip=192.168.0.4,dst_port=5060,src_port=5062 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 #AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 Loading
etc/TestCodec/TestCodec.cfg +2 −2 Original line number Original line Diff line number Diff line Loading @@ -58,13 +58,13 @@ system.httpPort.params := "HTTP(codecs=held:held_codec;html:html_codec;json:json #TestCodec_Invite.tc_invite_request_1 #TestCodec_Invite.tc_invite_request_1 #TestCodec_Invite.tc_invite_request_2 #TestCodec_Invite.tc_invite_request_2 #TestCodec_Invite.tc_invite_request_3 #TestCodec_Invite.tc_invite_request_3 TestCodec_Invite.tc_invite_request_4 #TestCodec_Invite.tc_invite_request_4 #TestCodec_Responses.tc_100_trying_1 #TestCodec_Responses.tc_100_trying_1 #TestCodec_Responses.tc_180_ringing_1 #TestCodec_Responses.tc_180_ringing_1 #TestCodec_HttpRequest.tc_http_get_1 #TestCodec_HttpRequest.tc_http_get_1 #TestCodec_HttpResponse.tc_http_200_ok_1 #TestCodec_HttpResponse.tc_http_200_ok_1 #TestCodec_HttpPort.tc_http_map_1 #TestCodec_HttpPort.tc_http_map_1 #TestCodec_Xsd.tc_linear_ring_1 TestCodec_Xsd.tc_linear_ring_1 #TestCodec_Xsd.tc_test_vendor_response_1 #TestCodec_Xsd.tc_test_vendor_response_1 #TestCodec_Xsd.tc_test_vendor_response_2 #TestCodec_Xsd.tc_test_vendor_response_2 Loading