From 26ed48c4e616014ee760fd13d13dbdc8539c34e3 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 22 十二月 2020 19:21:55 +0800
Subject: [PATCH] 解决sendandrecv发送到一个不存在key的情况

---
 src/socket/net_mod_socket.c |   37 +++++++++++++++++++++----------------
 1 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/src/socket/net_mod_socket.c b/src/socket/net_mod_socket.c
index 1e1fc27..48b0e7c 100644
--- a/src/socket/net_mod_socket.c
+++ b/src/socket/net_mod_socket.c
@@ -85,7 +85,7 @@
 
   int i, n, recv_size, connfd;
   net_node_t *node;
-  void *recv_buf;
+  void *recv_buf = NULL;
   
   net_mod_request_head_t request_head = {};
  
@@ -131,13 +131,15 @@
     node = &node_arr[i];
     if(node->host == NULL || strcmp(node->host, "") == 0 ) {
       // 鏈湴鍙戦��
-      shmModSocket.sendandrecv(send_buf, send_size, node->key, &recv_buf, &recv_size);
-      strcpy( ret_arr[n_recv_suc].host,"");
-      ret_arr[n_recv_suc].port = 0;
-      ret_arr[n_recv_suc].key = node->key;
-      ret_arr[n_recv_suc].content = recv_buf;
-      ret_arr[n_recv_suc].content_length = recv_size;
-      n_recv_suc++;
+      if(shmModSocket.sendandrecv(send_buf, send_size, node->key, &recv_buf, &recv_size) == 0) {
+        strcpy( ret_arr[n_recv_suc].host,"");
+        ret_arr[n_recv_suc].port = 0;
+        ret_arr[n_recv_suc].key = node->key;
+        ret_arr[n_recv_suc].content = recv_buf;
+        ret_arr[n_recv_suc].content_length = recv_size;
+        n_recv_suc++;
+      }
+     
       continue;
     }
 
@@ -234,6 +236,17 @@
   return n_recv_suc;
      
 }
+
+
+void NetModSocket::free_recv_msg_arr(net_mod_recv_msg_t * arr, size_t size) {
+
+  for(int i =0; i< size; i++) {
+    if(arr[i].content != NULL)
+      free(arr[i].content);
+  }
+  free(arr);
+}
+
 
 int NetModSocket::pub(net_node_t *node_arr, int arrlen, char *topic, int topic_size, void *content, int content_size) {
   return _pub_(node_arr, arrlen, topic, topic_size, content,   content_size, -1);
@@ -631,14 +644,6 @@
   return shmModSocket.get_key();
 }
 
-
-void NetModSocket::free_recv_msg_arr(net_mod_recv_msg_t * arr, size_t size) {
-
-  for(int i =0; i< size; i++) {
-    free(arr[i].content);
-  }
-  free(arr);
-}
 
 
 

--
Gitblit v1.8.0