From 8dead3c23da957fce542d8483c7bce7d5a7232ed Mon Sep 17 00:00:00 2001 From: Fu Juntang <StrongTiger_001@163.com> Date: 星期三, 01 九月 2021 14:42:21 +0800 Subject: [PATCH] Fix the buf data parse issue. --- src/bh_api.cpp | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/bh_api.cpp b/src/bh_api.cpp index 5fedc83..4d0f10b 100644 --- a/src/bh_api.cpp +++ b/src/bh_api.cpp @@ -344,6 +344,8 @@ logger->error("in BHRegisterTopics: Out of memory!\n"); + pthread_mutex_unlock(&mutex); + goto exit_entry; } memset(topics_buf, 0x00, total); @@ -365,13 +367,14 @@ #else memcpy(topics_buf, topics, topics_len); + count = topics_len; #endif - rv = net_mod_socket_reg(gNetmod_socket, topics_buf, strlen(topics_buf) + 1, NULL, 0, timeout_ms, PROC_REG_TCS); + rv = net_mod_socket_reg(gNetmod_socket, topics_buf, count, NULL, 0, timeout_ms, PROC_REG_TCS); memset(errString, 0x00, sizeof(errString)); strncpy(errString, bus_strerror(rv), sizeof(errString)); - + free(topics_buf); pthread_mutex_unlock(&mutex); @@ -475,7 +478,7 @@ buf = const_cast<void *>(topic); strncpy(topics_buf, (const char *)buf, min); #endif - rv = net_mod_socket_reg(gNetmod_socket, topics_buf, strlen(topics_buf) + 1, &buf, &size, timeout_ms, PROC_QUE_TCS); + rv = net_mod_socket_reg(gNetmod_socket, topics_buf, min, &buf, &size, timeout_ms, PROC_QUE_TCS); memset(errString, 0x00, sizeof(errString)); strncpy(errString, bus_strerror(rv), sizeof(errString)); @@ -789,7 +792,9 @@ strncpy(errString, bus_strerror(rv), sizeof(errString)); logger->error("in BHSubscribeTopics: Out of memory!\n"); - + + pthread_mutex_unlock(&mutex); + goto exit_entry; } memset(topics_buf, 0x00, total); @@ -810,21 +815,22 @@ #else memcpy(topics_buf, topics, topics_len); + count = topics_len; #endif if (timeout_ms > 0) { sec = timeout_ms / 1000; nsec = (timeout_ms - sec * 1000) * 1000 * 1000; - rv = net_mod_socket_sub_timeout(gNetmod_socket, topics_buf, strlen(topics_buf) + 1, sec, nsec); + rv = net_mod_socket_sub_timeout(gNetmod_socket, topics_buf, count, sec, nsec); } else if (timeout_ms == 0) { - rv = net_mod_socket_sub_nowait(gNetmod_socket, topics_buf, strlen(topics_buf) + 1); + rv = net_mod_socket_sub_nowait(gNetmod_socket, topics_buf, count); } else { - rv = net_mod_socket_sub(gNetmod_socket, topics_buf, strlen(topics_buf) + 1); + rv = net_mod_socket_sub(gNetmod_socket, topics_buf, count); } @@ -1115,8 +1121,6 @@ memcpy(*proc_id, topics_buf, *proc_id_len); #endif - - pthread_mutex_unlock(&mutex); } else { -- Gitblit v1.8.0