Commit 693b4cfb authored by Tien Thinh NGUYEN's avatar Tien Thinh NGUYEN Committed by sagar arora

Free bstring after using

parent 87ad8fb6
...@@ -1117,7 +1117,8 @@ void amf_sbi::curl_http_client( ...@@ -1117,7 +1117,8 @@ void amf_sbi::curl_http_client(
std::string n1sm = {}; std::string n1sm = {};
std::string n2sm = {}; std::string n2sm = {};
nlohmann::json response_data = {}; nlohmann::json response_data = {};
bstring n1sm_hex, n2sm_hex; bstring n1sm_hex = nullptr;
bstring n2sm_hex = nullptr;
Logger::amf_sbi().info("Get response with HTTP code (%d)", httpCode); Logger::amf_sbi().info("Get response with HTTP code (%d)", httpCode);
Logger::amf_sbi().info("Response body %s", response.c_str()); Logger::amf_sbi().info("Response body %s", response.c_str());
...@@ -1257,6 +1258,7 @@ void amf_sbi::curl_http_client( ...@@ -1257,6 +1258,7 @@ void amf_sbi::curl_http_client(
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
curl_global_cleanup(); curl_global_cleanup();
free_wrapper((void**) &body_data); free_wrapper((void**) &body_data);
bdestroy_wrapper(&n1sm_hex);
return; return;
} }
...@@ -1274,7 +1276,7 @@ void amf_sbi::curl_http_client( ...@@ -1274,7 +1276,7 @@ void amf_sbi::curl_http_client(
comUt::print_buffer( comUt::print_buffer(
"amf_sbi", "Get response n1sm:", (uint8_t*) bdata(n1sm_hex), "amf_sbi", "Get response n1sm:", (uint8_t*) bdata(n1sm_hex),
blength(n1sm_hex)); blength(n1sm_hex));
itti_msg->n1sm = n1sm_hex; itti_msg->n1sm = bstrcpy(n1sm_hex);
itti_msg->is_n1sm_set = true; itti_msg->is_n1sm_set = true;
} }
if (n2sm.size() > 0) { if (n2sm.size() > 0) {
...@@ -1282,7 +1284,7 @@ void amf_sbi::curl_http_client( ...@@ -1282,7 +1284,7 @@ void amf_sbi::curl_http_client(
comUt::print_buffer( comUt::print_buffer(
"amf_sbi", "Get response n2sm:", (uint8_t*) bdata(n2sm_hex), "amf_sbi", "Get response n2sm:", (uint8_t*) bdata(n2sm_hex),
blength(n2sm_hex)); blength(n2sm_hex));
itti_msg->n2sm = n2sm_hex; itti_msg->n2sm = bstrcpy(n2sm_hex);
itti_msg->is_n2sm_set = true; itti_msg->is_n2sm_set = true;
itti_msg->n2sm_info_type = response_data itti_msg->n2sm_info_type = response_data
["n2SmInfoType"]; // response_data["n2InfoContainer"]["smInfo"]["n2InfoContent"]["ngapIeType"]; ["n2SmInfoType"]; // response_data["n2InfoContainer"]["smInfo"]["n2InfoContent"]["ngapIeType"];
...@@ -1301,6 +1303,8 @@ void amf_sbi::curl_http_client( ...@@ -1301,6 +1303,8 @@ void amf_sbi::curl_http_client(
} }
} }
bdestroy_wrapper(&n1sm_hex);
bdestroy_wrapper(&n2sm_hex);
curl_slist_free_all(headers); curl_slist_free_all(headers);
curl_easy_cleanup(curl); curl_easy_cleanup(curl);
} }
...@@ -1400,7 +1404,6 @@ void amf_sbi::curl_http_client( ...@@ -1400,7 +1404,6 @@ void amf_sbi::curl_http_client(
std::string n1sm = {}; std::string n1sm = {};
std::string n2sm = {}; std::string n2sm = {};
nlohmann::json response_data = {}; nlohmann::json response_data = {};
bstring n1sm_hex, n2sm_hex;
// clear input // clear input
n1sm_msg = {}; n1sm_msg = {};
......
...@@ -195,11 +195,9 @@ unsigned char* conv::format_string_as_hex(std::string str) { ...@@ -195,11 +195,9 @@ unsigned char* conv::format_string_as_hex(std::string str) {
unsigned char* data = (unsigned char*) malloc(str_len + 1); unsigned char* data = (unsigned char*) malloc(str_len + 1);
memset(data, 0, str_len + 1); memset(data, 0, str_len + 1);
memcpy((void*) data, (void*) str.c_str(), str_len); memcpy((void*) data, (void*) str.c_str(), str_len);
std::cout << "Data: " << data << " (" << str_len << " bytes)" << std::endl; std::cout << "Data: " << data << " (" << str_len << " bytes)" << std::endl;
std::cout << "Data (formatted): \n"; std::cout << "Data (formatted): \n";
for (int i = 0; i < str_len; i++) { for (int i = 0; i < str_len; i++) {
char datatmp[3] = {0}; char datatmp[3] = {0};
...@@ -240,7 +238,7 @@ char* conv::bstring2charString(bstring b) { ...@@ -240,7 +238,7 @@ char* conv::bstring2charString(bstring b) {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void conv::msg_str_2_msg_hex(std::string msg, bstring& b) { void conv::msg_str_2_msg_hex(std::string msg, bstring& b) {
std::string msg_hex_str; std::string msg_hex_str = {};
convert_string_2_hex(msg, msg_hex_str); convert_string_2_hex(msg, msg_hex_str);
printf("tmp string: %s\n", msg_hex_str.c_str()); printf("tmp string: %s\n", msg_hex_str.c_str());
unsigned int msg_len = msg_hex_str.length(); unsigned int msg_len = msg_hex_str.length();
...@@ -251,6 +249,8 @@ void conv::msg_str_2_msg_hex(std::string msg, bstring& b) { ...@@ -251,6 +249,8 @@ void conv::msg_str_2_msg_hex(std::string msg, bstring& b) {
uint8_t* msg_hex = (uint8_t*) malloc(msg_len / 2 + 1); uint8_t* msg_hex = (uint8_t*) malloc(msg_len / 2 + 1);
conv::ascii_to_hex(msg_hex, (const char*) data); conv::ascii_to_hex(msg_hex, (const char*) data);
b = blk2bstr(msg_hex, (msg_len / 2)); b = blk2bstr(msg_hex, (msg_len / 2));
free_wrapper((void**) &data);
free_wrapper((void**) &msg_hex);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
......
...@@ -177,29 +177,29 @@ void amf_http2_server::n1_n2_message_transfer_handler( ...@@ -177,29 +177,29 @@ void amf_http2_server::n1_n2_message_transfer_handler(
return; return;
} }
bstring n1sm; bstring n1sm = nullptr;
conv::msg_str_2_msg_hex( conv::msg_str_2_msg_hex(
n1sm_str.substr(0, n1sm_str.length()), n1sm); // TODO: verify n1sm_length n1sm_str.substr(0, n1sm_str.length()), n1sm); // TODO: verify n1sm_length
bstring n2sm; bstring n2sm = nullptr;
if (!n2sm_str.empty()) { if (!n2sm_str.empty()) {
conv::msg_str_2_msg_hex(n2sm_str, n2sm); conv::msg_str_2_msg_hex(n2sm_str, n2sm);
psc->n2sm = n2sm; psc->n2sm = bstrcpy(n2sm);
psc->is_n2sm_avaliable = true; psc->is_n2sm_avaliable = true;
} else { } else {
psc->is_n2sm_avaliable = false; psc->is_n2sm_avaliable = false;
} }
psc->n1sm = n1sm; psc->n1sm = bstrcpy(n1sm);
psc->is_n1sm_avaliable = true; psc->is_n1sm_avaliable = true;
itti_n1n2_message_transfer_request* itti_msg = auto itti_msg = std::make_shared<itti_n1n2_message_transfer_request>(
new itti_n1n2_message_transfer_request(AMF_SERVER, TASK_AMF_APP); AMF_SERVER, TASK_AMF_APP);
itti_msg->supi = ueContextId; itti_msg->supi = ueContextId;
itti_msg->n1sm = n1sm; itti_msg->n1sm = bstrcpy(n1sm);
itti_msg->is_n1sm_set = true; itti_msg->is_n1sm_set = true;
if (!n2sm_str.empty()) { if (!n2sm_str.empty()) {
itti_msg->n2sm = n2sm; itti_msg->n2sm = bstrcpy(n2sm);
itti_msg->is_n2sm_set = true; itti_msg->is_n2sm_set = true;
} else { } else {
itti_msg->is_n2sm_set = false; itti_msg->is_n2sm_set = false;
...@@ -230,14 +230,15 @@ void amf_http2_server::n1_n2_message_transfer_handler( ...@@ -230,14 +230,15 @@ void amf_http2_server::n1_n2_message_transfer_handler(
res.end(response_json.dump().c_str()); res.end(response_json.dump().c_str());
// Process N1N2 Message Transfer Request // Process N1N2 Message Transfer Request
std::shared_ptr<itti_n1n2_message_transfer_request> i = int ret = itti_inst->send_msg(itti_msg);
std::shared_ptr<itti_n1n2_message_transfer_request>(itti_msg);
int ret = itti_inst->send_msg(i);
if (0 != ret) { if (0 != ret) {
Logger::amf_server().error( Logger::amf_server().error(
"Could not send ITTI message %s to task TASK_AMF_N2", "Could not send ITTI message %s to task TASK_AMF_N2",
i->get_msg_name()); itti_msg->get_msg_name());
} }
bdestroy_wrapper(&n1sm);
bdestroy_wrapper(&n2sm);
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
......
...@@ -54,7 +54,7 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer( ...@@ -54,7 +54,7 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
Logger::amf_server().debug( Logger::amf_server().debug(
"Receive N1N2MessageTransfer Request, handling..."); "Receive N1N2MessageTransfer Request, handling...");
bstring n1sm; bstring n1sm = nullptr;
conv::msg_str_2_msg_hex(n1sm_str, n1sm); conv::msg_str_2_msg_hex(n1sm_str, n1sm);
comUt::print_buffer( comUt::print_buffer(
"amf_server", "Received N1 SM", (uint8_t*) bdata(n1sm), blength(n1sm)); "amf_server", "Received N1 SM", (uint8_t*) bdata(n1sm), blength(n1sm));
...@@ -62,6 +62,7 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer( ...@@ -62,6 +62,7 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
Pistache::Http::Code::Ok, Pistache::Http::Code::Ok,
"N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer API has " "N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer API has "
"not been implemented yet!"); "not been implemented yet!");
bdestroy_wrapper(&n1sm);
} }
void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer( void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
...@@ -88,25 +89,25 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer( ...@@ -88,25 +89,25 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
"Cannot get pdu_session_context with SUPI (%s)", supi.c_str()); "Cannot get pdu_session_context with SUPI (%s)", supi.c_str());
} }
bstring n1sm; bstring n1sm = nullptr;
conv::msg_str_2_msg_hex( conv::msg_str_2_msg_hex(
n1sm_str.substr(0, n1sm_str.length()), n1sm); // TODO: verify n1sm_length n1sm_str.substr(0, n1sm_str.length()), n1sm); // TODO: verify n1sm_length
bstring n2sm; bstring n2sm = nullptr;
conv::msg_str_2_msg_hex(n2sm_str, n2sm); conv::msg_str_2_msg_hex(n2sm_str, n2sm);
psc->n1sm = n1sm; psc->n1sm = bstrcpy(n1sm);
psc->is_n1sm_avaliable = true; psc->is_n1sm_avaliable = true;
psc->n2sm = n2sm; psc->n2sm = bstrcpy(n2sm);
psc->is_n2sm_avaliable = true; psc->is_n2sm_avaliable = true;
Logger::amf_server().debug("n2sm size in amf_server(%d)", blength(psc->n2sm)); Logger::amf_server().debug("n2sm size in amf_server(%d)", blength(psc->n2sm));
itti_n1n2_message_transfer_request* itti_msg = auto itti_msg = std::make_shared<itti_n1n2_message_transfer_request>(
new itti_n1n2_message_transfer_request(AMF_SERVER, TASK_AMF_APP); AMF_SERVER, TASK_AMF_APP);
itti_msg->supi = ueContextId; itti_msg->supi = ueContextId;
itti_msg->n1sm = n1sm; itti_msg->n1sm = bstrcpy(n1sm);
itti_msg->is_n1sm_set = true; itti_msg->is_n1sm_set = true;
itti_msg->n2sm = n2sm; itti_msg->n2sm = bstrcpy(n2sm);
itti_msg->is_n2sm_set = true; itti_msg->is_n2sm_set = true;
itti_msg->pdu_session_id = itti_msg->pdu_session_id =
(uint8_t) n1N2MessageTransferReqData.getPduSessionId(); (uint8_t) n1N2MessageTransferReqData.getPduSessionId();
...@@ -131,14 +132,15 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer( ...@@ -131,14 +132,15 @@ void N1N2MessageCollectionDocumentApiImpl::n1_n2_message_transfer(
response.send(code, response_json.dump().c_str()); response.send(code, response_json.dump().c_str());
// Process N1N2 Message Transfer Request // Process N1N2 Message Transfer Request
std::shared_ptr<itti_n1n2_message_transfer_request> i = int ret = itti_inst->send_msg(itti_msg);
std::shared_ptr<itti_n1n2_message_transfer_request>(itti_msg);
int ret = itti_inst->send_msg(i);
if (0 != ret) { if (0 != ret) {
Logger::amf_server().error( Logger::amf_server().error(
"Could not send ITTI message %s to task TASK_AMF_N2", "Could not send ITTI message %s to task TASK_AMF_N2",
i->get_msg_name()); itti_msg->get_msg_name());
} }
bdestroy_wrapper(&n1sm);
bdestroy_wrapper(&n2sm);
} }
} // namespace api } // namespace api
......
...@@ -207,12 +207,13 @@ int sctp_server::sctp_read_from_socket(int sd, uint32_t ppid) { ...@@ -207,12 +207,13 @@ int sctp_server::sctp_read_from_socket(int sd, uint32_t ppid) {
sinfo.sinfo_assoc_id, sd, n, ntohs(addr.sin6_port), sinfo.sinfo_stream, sinfo.sinfo_assoc_id, sd, n, ntohs(addr.sin6_port), sinfo.sinfo_stream,
ntohl(sinfo.sinfo_ppid)); ntohl(sinfo.sinfo_ppid));
bstring payload = blk2bstr(buffer, n); bstring payload = blk2bstr(buffer, n);
// handle payload // Handle payload
app_->handle_receive( app_->handle_receive(
payload, (sctp_assoc_id_t) sinfo.sinfo_assoc_id, sinfo.sinfo_stream, payload, (sctp_assoc_id_t) sinfo.sinfo_assoc_id, sinfo.sinfo_stream,
association->instreams, association->outstreams); association->instreams, association->outstreams);
bdestroy_wrapper(&payload);
} }
return 0; return RETURNok;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -223,7 +224,7 @@ int sctp_server::sctp_handle_com_down(sctp_assoc_id_t assoc_id) { ...@@ -223,7 +224,7 @@ int sctp_server::sctp_handle_com_down(sctp_assoc_id_t assoc_id) {
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
int sctp_server::sctp_handle_reset(const sctp_assoc_id_t assoc_id) { int sctp_server::sctp_handle_reset(const sctp_assoc_id_t assoc_id) {
return 0; return RETURNok;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -343,7 +344,7 @@ int sctp_server::sctp_get_peeraddresses( ...@@ -343,7 +344,7 @@ int sctp_server::sctp_get_peeraddresses(
} else { } else {
sctp_freepaddrs((struct sockaddr*) temp_addr_p); sctp_freepaddrs((struct sockaddr*) temp_addr_p);
} }
return 0; return RETURNok;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -388,7 +389,7 @@ int sctp_server::sctp_get_localaddresses( ...@@ -388,7 +389,7 @@ int sctp_server::sctp_get_localaddresses(
sctp_freeladdrs((struct sockaddr*) temp_addr_p); sctp_freeladdrs((struct sockaddr*) temp_addr_p);
} }
} }
return 0; return RETURNok;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
...@@ -420,14 +421,14 @@ int sctp_server::sctp_send_msg( ...@@ -420,14 +421,14 @@ int sctp_server::sctp_send_msg(
"[Socket %d] Send stream %u, ppid %u, len %u failed (%s, %d)", "[Socket %d] Send stream %u, ppid %u, len %u failed (%s, %d)",
assoc_desc->sd, stream, htonl(assoc_desc->ppid), blength(*payload), assoc_desc->sd, stream, htonl(assoc_desc->ppid), blength(*payload),
strerror(errno), errno); strerror(errno), errno);
*payload = NULL; //*payload = NULL;
return RETURNerror; return RETURNerror;
} }
Logger::sctp().debug( Logger::sctp().debug(
"Successfully sent %d bytes on stream %d", blength(*payload), stream); "Successfully sent %d bytes on stream %d", blength(*payload), stream);
*payload = NULL; //*payload = NULL;
assoc_desc->messages_sent++; assoc_desc->messages_sent++;
return 0; return RETURNok;
} }
} // namespace sctp } // namespace sctp
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment