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