From 546bdaa58724ec6a19b56e800ad60963bd3bd1bc Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 04 二月 2021 11:42:24 +0800
Subject: [PATCH] modify callback function

---
 test_net_socket/CMakeLists.txt          |    4 -
 src/socket/shm_mod_socket.h             |    6 +
 src/net/net_mod_socket_wrapper.cpp      |   42 ++++-----
 src/net/net_mod_socket_wrapper.h        |  104 ++++++++++++++-----------
 src/net/net_mod_socket.h                |    5 +
 test_net_socket/test_net_mod_socket.cpp |   12 +-
 src/socket/shm_socket.h                 |   14 ++-
 src/socket/shm_mod_socket.cpp           |   11 --
 src/net/net_mod_socket.cpp              |    4 
 src/socket/shm_socket.cpp               |   30 ++-----
 10 files changed, 114 insertions(+), 118 deletions(-)

diff --git a/src/net/net_mod_socket.cpp b/src/net/net_mod_socket.cpp
index e1b30d7..06ba5c2 100644
--- a/src/net/net_mod_socket.cpp
+++ b/src/net/net_mod_socket.cpp
@@ -498,10 +498,10 @@
 }
 
 
-int NetModSocket::recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
+int NetModSocket::recvandsend(recvandsend_callback_fn callback,
                               const struct timespec *timeout , int flag, void * user_data ) {
 
-  return shmModSocket.recvandsend( recvbuf, recvsize, key, callback, timeout, flag, user_data);
+  return shmModSocket.recvandsend(callback, timeout, flag, user_data);
 }
  
 
diff --git a/src/net/net_mod_socket.h b/src/net/net_mod_socket.h
index 7d64bb1..a2acc55 100644
--- a/src/net/net_mod_socket.h
+++ b/src/net/net_mod_socket.h
@@ -195,7 +195,10 @@
 
   
 
-  int recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
+  /**
+   * recvandsend
+   */
+  int recvandsend( recvandsend_callback_fn callback,
                                         const struct timespec *timeout = NULL , int flag = 0, void * user_data = NULL );
 
   /**
diff --git a/src/net/net_mod_socket_wrapper.cpp b/src/net/net_mod_socket_wrapper.cpp
index 72fd0d2..4be2d5c 100644
--- a/src/net/net_mod_socket_wrapper.cpp
+++ b/src/net/net_mod_socket_wrapper.cpp
@@ -90,34 +90,11 @@
 	return sockt->recvfrom_nowait(buf, size, key);
 }
 
-
-int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data) {
-  NetModSocket *sockt = (NetModSocket *)_socket;
-  return sockt->recvandsend( recvbuf, recvsize, key, callback, NULL, 0, user_data);
-
-}
-
-int net_mod_socket_recvandsend_timeout(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
-                                       int sec, int nsec, void * user_data) {
-  NetModSocket *sockt = (NetModSocket *)_socket;
-  struct timespec timeout = {sec, nsec};
-  return sockt->recvandsend( recvbuf, recvsize, key, callback, &timeout, BUS_TIMEOUT_FLAG, user_data);
-}
-
-int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data) {
-  NetModSocket *sockt = (NetModSocket *)_socket;
-  return sockt->recvandsend( recvbuf, recvsize, key, callback, NULL, BUS_NOWAIT_FLAG, user_data);
-}
-
-
 int net_mod_socket_sendandrecv(void *_socket, net_node_t *node_arr, int arrlen, void *send_buf, int send_size, 
   net_mod_recv_msg_t ** recv_arr, int *recv_arr_size){
 	NetModSocket *sockt = (NetModSocket *)_socket;
 	return sockt->sendandrecv(node_arr,  arrlen, send_buf,  send_size, recv_arr, recv_arr_size);
 }
-
-
-
 
 /**
  * 濡傛灉寤虹珛杩炴帴鐨勮妭鐐规病鏈夋帴鍙楀埌娑堟伅绛夊緟timeout鐨勬椂闂村悗杩斿洖
@@ -137,6 +114,25 @@
 }
 
 
+int net_mod_socket_recvandsend(void *_socket, recvandsend_callback_fn callback, void * user_data) {
+  NetModSocket *sockt = (NetModSocket *)_socket;
+  return sockt->recvandsend(  callback, NULL, 0, user_data);
+
+}
+
+int net_mod_socket_recvandsend_timeout(void *_socket, recvandsend_callback_fn callback,
+                                       int sec, int nsec, void * user_data) {
+  NetModSocket *sockt = (NetModSocket *)_socket;
+  struct timespec timeout = {sec, nsec};
+  return sockt->recvandsend(  callback, &timeout, BUS_TIMEOUT_FLAG, user_data);
+}
+
+int net_mod_socket_recvandsend_nowait(void *_socket,  recvandsend_callback_fn callback, void * user_data) {
+  NetModSocket *sockt = (NetModSocket *)_socket;
+  return sockt->recvandsend(  callback, NULL, BUS_NOWAIT_FLAG, user_data);
+}
+
+
  /**
  * 鍚憂ode_arr 涓殑鎵�鏈夌綉缁滆妭鐐瑰彂甯冩秷鎭�
  * @node_arr 缃戠粶鑺傜偣缁�, @node_arr_len璇ユ暟缁勯暱搴�
diff --git a/src/net/net_mod_socket_wrapper.h b/src/net/net_mod_socket_wrapper.h
index deacf4a..f7a15ea 100644
--- a/src/net/net_mod_socket_wrapper.h
+++ b/src/net/net_mod_socket_wrapper.h
@@ -122,51 +122,6 @@
 
 
 
-/**
- * @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屼竴鐩寸瓑寰呭畬鎴�
- *
- * @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
- * @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
- * @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
- * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize, void * user_data)
- *            sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず杩斿洖鐨勬暟鎹紝鍜岃繑鍥炴暟鎹殑闀垮害銆�
- *
- * @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
- */
-int net_mod_socket_recvandsend(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data);
-
-/**
- * @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屽湪鎸囧畾鐨勬椂闂村唴鍗充娇娌℃湁瀹屾垚涔熻繑鍥�
- *
- * @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
- * @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
- * @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
- * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize, void * user_data)
- *            sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず杩斿洖鐨勬暟鎹紝鍜岃繑鍥炴暟鎹殑闀垮害銆�
- *
- * @param sec 绉�
- * @param nsec 绾崇
- *
- * @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
- */
-int net_mod_socket_recvandsend_timeout(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
-                                      int sec, int nsec, void * user_data ) ;
-
-
-/**
- * @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屾棤璁烘垚鍔熶笌鍚︾珛鍒昏繑鍥�
- *
- * @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
- * @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
- * @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
- * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize, void * user_data)
- *            sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず杩斿洖鐨勬暟鎹紝鍜岃繑鍥炴暟鎹殑闀垮害銆�
- *
- * @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
- */
-int net_mod_socket_recvandsend_nowait(void *_socket, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, void * user_data) ;
-
-
 
 /**
  * @brief 璺ㄦ満鍣ㄥ彂閫佹秷鎭苟鎺ュ彈杩斿洖鐨勫簲绛旀秷鎭紝鐩村埌鍙戦�佸畬鎴愭墠杩斿洖
@@ -205,6 +160,65 @@
   net_mod_recv_msg_t ** recv_arr, int *recv_arr_size, int timeout);
 
 
+
+
+/**
+ * @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屼竴鐩寸瓑寰呭畬鎴�
+ *
+ * @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
+ * @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
+ * @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
+ * @callback  void (*recvandsend_callback_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
+ *                  @recvbuf 鏀跺埌鐨勬暟鎹�
+ *                  @recvsize 鏀跺埌鐨勬暟鎹殑澶у皬
+ *                  @key 鎺ュ彈鏁版嵁骞跺苟鍙戦�佹暟鎹殑瀵硅薄
+ *                  @sendbuf 瀛樺偍杩斿洖鍊肩殑鍦板潃锛岃〃绀鸿繑鍥炵殑鏁版嵁
+ *                  @sendsize 瀛樺偍杩斿洖鍊肩殑鍦板潃锛� 杩斿洖鏁版嵁鐨勯暱搴�
+ *
+ * @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
+ */
+int net_mod_socket_recvandsend(void *_socket,  recvandsend_callback_fn callback, void * user_data);
+
+/**
+ * @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屽湪鎸囧畾鐨勬椂闂村唴鍗充娇娌℃湁瀹屾垚涔熻繑鍥�
+ *
+ * @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
+ * @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
+ * @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
+ * @callback  void (*recvandsend_callback_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
+ *                  @recvbuf 鏀跺埌鐨勬暟鎹�
+ *                  @recvsize 鏀跺埌鐨勬暟鎹殑澶у皬
+ *                  @key 鎺ュ彈鏁版嵁骞跺苟鍙戦�佹暟鎹殑瀵硅薄
+ *                  @sendbuf 瀛樺偍杩斿洖鍊肩殑鍦板潃锛岃〃绀鸿繑鍥炵殑鏁版嵁
+ *                  @sendsize 瀛樺偍杩斿洖鍊肩殑鍦板潃锛� 杩斿洖鏁版嵁鐨勯暱搴�
+ *
+ * @param sec 绉�
+ * @param nsec 绾崇
+ *
+ * @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
+ */
+int net_mod_socket_recvandsend_timeout(void *_socket, recvandsend_callback_fn callback,
+                                       int sec, int nsec, void * user_data ) ;
+
+
+/**
+ * @brief 鎺ュ彈娑堟伅锛屽苟鎶奵allback鍑芥暟杩斿洖鐨勬暟鎹彂閫佸洖瀵规柟锛屾棤璁烘垚鍔熶笌鍚︾珛鍒昏繑鍥�
+ *
+ * @param recvbuf 鎺ュ彈鍒扮殑娑堟伅瀛樻斁鐨勭紦瀛樺湴鍧�锛岃buf浣跨敤瀹屾垚鍚庨渶瑕佹墜鍔ㄩ噴鏀�
+ * @param recvsize 鎺ュ彈鍒版秷鎭殑闀垮害
+ * @param key 浠庤皝鍝噷鏀跺埌鐨勪俊鎭�
+ * @callback  void (*recvandsend_callback_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
+ *                  @recvbuf 鏀跺埌鐨勬暟鎹�
+ *                  @recvsize 鏀跺埌鐨勬暟鎹殑澶у皬
+ *                  @key 鎺ュ彈鏁版嵁骞跺苟鍙戦�佹暟鎹殑瀵硅薄
+ *                  @sendbuf 瀛樺偍杩斿洖鍊肩殑鍦板潃锛岃〃绀鸿繑鍥炵殑鏁版嵁
+ *                  @sendsize 瀛樺偍杩斿洖鍊肩殑鍦板潃锛� 杩斿洖鏁版嵁鐨勯暱搴�
+ *
+ * @return 0鏄垚鍔燂紝 鍏朵粬鍊兼槸澶辫触鐨勯敊璇爜
+ */
+int net_mod_socket_recvandsend_nowait(void *_socket, recvandsend_callback_fn callback, void * user_data) ;
+
+
 /**
  * @brief 璺ㄦ満鍣ㄥ彂閫佹秷鎭苟鎺ュ彈杩斿洖鐨勫簲绛旀秷鎭紝涓嶇鏄惁鍙戦�佸畬鎴愮珛鍒昏繑鍥�
  *
diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 32ff061..f5bd0b7 100644
--- a/src/socket/shm_mod_socket.cpp
+++ b/src/socket/shm_mod_socket.cpp
@@ -91,16 +91,9 @@
 }
 
 
-int ShmModSocket::recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
+int ShmModSocket::recvandsend( recvandsend_callback_fn callback,
                     const struct timespec *timeout , int flag, void * user_data ) {
-  int rv = shm_recvandsend(shm_socket, recvbuf, recvsize, key, callback, timeout, flag, user_data);
-  if(rv == 0) {
-    logger->debug("ShmModSocket::shm_recvandsend: success. key = %d\n", *key);
-    return 0;
-  }
-
-  logger->debug("ShmModSocket::shm_recvandsend :  failed. %s", bus_strerror(rv));
-  return rv;
+  return shm_recvandsend(shm_socket, callback, timeout, flag, user_data);
 }
  
 // // 瓒呮椂杩斿洖銆� @sec 绉� 锛� @nsec 绾崇
diff --git a/src/socket/shm_mod_socket.h b/src/socket/shm_mod_socket.h
index c0bd3d4..fb389a3 100644
--- a/src/socket/shm_mod_socket.h
+++ b/src/socket/shm_mod_socket.h
@@ -87,8 +87,10 @@
 	 const struct timespec *timeout = NULL, int flag = 0);
 
 
-  int recvandsend(void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
-                      const struct timespec *timeout = NULL , int flag = 0, void * user_data = NULL);
+	/**
+	 * 
+	 */
+  int recvandsend( recvandsend_callback_fn callback, const struct timespec *timeout = NULL , int flag = 0, void * user_data = NULL);
 
 	/**
 	 * 璁㈤槄鎸囧畾涓婚
diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp
index fbb849d..9ce94da 100644
--- a/src/socket/shm_socket.cpp
+++ b/src/socket/shm_socket.cpp
@@ -242,11 +242,11 @@
 }
 
 /**
- * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize) 
+ * @callback  void (*recvandsend_callback_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize) 
  *            sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず鍙戦�佹暟鎹紝鍜屽彂閫佹暟鎹殑澶у皬銆�
  * 
  */
-int shm_recvandsend(shm_socket_t *sockt, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback, 
+int shm_recvandsend(shm_socket_t *sockt,  recvandsend_callback_fn callback, 
   const struct timespec *timeout, int flag, void *user_data) {
   
   int rv;
@@ -257,31 +257,21 @@
 
   rv = shm_recvpakfrom(sockt , &recvpak, timeout, flag);
 
- 
-
   if (rv != 0) {
-    if(rv == ETIMEDOUT)
+    if(rv == ETIMEDOUT){
+      logger->debug("%d shm_recvfrom failed %s", shm_socket_get_key(sockt), bus_strerror(EBUS_TIMEOUT));
       return EBUS_TIMEOUT;
+    }
     
-    logger->debug("%d shm_recvfrom failed %s", shm_socket_get_key(sockt), bus_strerror(rv));
+    logger->error("%d shm_recvfrom failed %s", shm_socket_get_key(sockt), bus_strerror(rv));
     return rv;
   }
    
-  if(recvbuf != NULL) {
-    void *_buf = malloc(recvpak.size);
-    memcpy(_buf, recvpak.buf, recvpak.size);
-    *recvbuf = _buf; 
-  }
- 
-  if(recvsize != NULL)
-    *recvsize = recvpak.size;
-
-  if(key != NULL)
-    *key = recvpak.key;
-
+  
+  void *recvbuf = malloc(recvpak.size);
+  memcpy(recvbuf, recvpak.buf, recvpak.size);
   mm_free(recvpak.buf);
-
-  callback(&sendbuf, &sendsize, user_data);
+  callback(recvbuf, recvpak.size, recvpak.key, &sendbuf, &sendsize, user_data);
 
   shm_packet_t sendpak;
   sendpak.key = sockt->key;
diff --git a/src/socket/shm_socket.h b/src/socket/shm_socket.h
index aa5fc90..6444913 100644
--- a/src/socket/shm_socket.h
+++ b/src/socket/shm_socket.h
@@ -41,8 +41,8 @@
 
 } shm_socket_t;
 
-// typedef void (*recv_callback_fn)(void **sendbuf, int *sendsize);
-typedef std::function<void(void **sendbuf, int *sendsize, void *user_data)> recv_callback_fn;
+// typedef void (*recvandsend_callback_fn)(void **sendbuf, int *sendsize);
+typedef std::function<void(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void *user_data)> recvandsend_callback_fn;
 
 size_t shm_socket_remove_keys(int keys[], size_t length);
 
@@ -67,11 +67,15 @@
 	const struct timespec * timeout = NULL,  int flags = 0);
 
 /**
- * @callback  void (*recv_callback_fn)(void **sendbuf, int *sendsize)
- *            sendbuf 鍜� sendsize鏄痗allbak_fn鍥炶皟鍑芥暟鐨勮繑鍥炲��, 鍒嗗埆琛ㄧず鍙戦�佹暟鎹紝鍜屽彂閫佹暟鎹殑澶у皬銆�
+ * @callback  void (*recvandsend_callback_fn)(void *recvbuf, int recvsize, int key, void **sendbuf, int *sendsize, void * user_data)
+ *                  @recvbuf 鏀跺埌鐨勬暟鎹�
+ *                  @recvsize 鏀跺埌鐨勬暟鎹殑澶у皬
+ *                  @key 鎺ュ彈鏁版嵁骞跺苟鍙戦�佹暟鎹殑瀵硅薄
+ *                  @sendbuf 瀛樺偍杩斿洖鍊肩殑鍦板潃锛岃〃绀鸿繑鍥炵殑鏁版嵁
+ *                  @sendsize 瀛樺偍杩斿洖鍊肩殑鍦板潃锛� 杩斿洖鏁版嵁鐨勯暱搴�
  *
  */
-int shm_recvandsend(shm_socket_t *sockt, void **recvbuf, int *recvsize, int *key, recv_callback_fn callback,
+int shm_recvandsend(shm_socket_t *sockt,  recvandsend_callback_fn callback,
                     const struct timespec *timeout = NULL, int flag = 0,  void * user_data = NULL);
 
 
diff --git a/test_net_socket/CMakeLists.txt b/test_net_socket/CMakeLists.txt
index 54e13e9..d11a1c9 100644
--- a/test_net_socket/CMakeLists.txt
+++ b/test_net_socket/CMakeLists.txt
@@ -24,10 +24,6 @@
                             )
 
 
-add_executable(test_recvandsend test_recvandsend.cpp)
-target_link_libraries(test_recvandsend PRIVATE shm_queue  ${EXTRA_LIBS} )
-
-
 target_include_directories(test_net_mod_socket PRIVATE
                             "${PROJECT_BINARY_DIR}"
                              ${EXTRA_INCLUDES}
diff --git a/test_net_socket/test_net_mod_socket.cpp b/test_net_socket/test_net_mod_socket.cpp
index bdbcc9b..8711bca 100644
--- a/test_net_socket/test_net_mod_socket.cpp
+++ b/test_net_socket/test_net_mod_socket.cpp
@@ -137,18 +137,16 @@
   printf("start reply\n");
   void *ser = net_mod_socket_open();
   net_mod_socket_bind(ser, mkey);
-  int recvsize;
-  void *recvbuf;
   char sendbuf[512];
   int rv;
-  int key;
   while(true) {
-    rv = net_mod_socket_recvandsend_timeout(ser, &recvbuf, &recvsize, &key, [&](void ** buf, int *size, void * user_data){
-    printf( "server: RECEIVED REQUEST FROM  %d : %s\n", key, recvbuf);
+    rv = net_mod_socket_recvandsend_timeout(ser, [&]( void *recvbuf, int recvsize, int key, void ** sendbuf_ptr, int *sendsize_ptr, void * user_data){
+    printf( "server: RECEIVED REQUEST FROM  %d : %s\n", key, (char *)recvbuf);
     sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(ser), (char *)recvbuf);
     // buf 鍜� size鏄繑鍥炲��
-    *buf = sendbuf;
-    *size = strlen(sendbuf) + 1;
+    *sendbuf_ptr = sendbuf;
+    *sendsize_ptr = strlen(sendbuf) + 1;
+    //recvbuf鏄垎閰嶅埌鍫嗛噷鐨勶紝浣跨敤瀹屽悗涓嶈蹇樿閲婃斁鎺�
     free(recvbuf);
     return;
     }, 0, 2000000, NULL );

--
Gitblit v1.8.0