From 803d392aeb11665a3e34f7be83f972a1fc7d39c0 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 04 二月 2021 15:47:39 +0800
Subject: [PATCH] update

---
 test_net_socket/test_net_mod_socket.cpp |   11 ++++++-----
 src/socket/shm_socket.cpp               |   25 ++++++++++++++-----------
 2 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp
index 39c79b5..8fef2f7 100644
--- a/src/socket/shm_socket.cpp
+++ b/src/socket/shm_socket.cpp
@@ -191,7 +191,7 @@
     return rv;
   }
 
-  while(true) {
+  while(tryn > 0) {
     tryn--;
     recvbufIter = sockt->recvbuf.find(uuid);
     if(recvbufIter != sockt->recvbuf.end()) {
@@ -199,36 +199,37 @@
 logger->debug("get from recvbuf: %s", uuid.c_str());
       recvpak = recvbufIter->second;
       sockt->recvbuf.erase(recvbufIter);
-      break;
+      goto LABLE_SUC;
     }
 
     rv = shm_recvpakfrom(sockt, &recvpak, timeout, flags);
 
     if (rv != 0) {
 
-      if(rv == ETIMEDOUT)
+      if(rv == ETIMEDOUT) {
         return EBUS_TIMEOUT;
+      }
 
       logger->debug("%d shm_recvfrom failed %s", shm_socket_get_key(sockt), bus_strerror(rv));
       return rv;
     } 
 
 logger->debug("send uuid:%s, recv uuid: %s", uuid.c_str(), recvpak.uuid);
-    if (strncmp(uuid.c_str(), recvpak.uuid, sizeof recvpak.uuid) == 0) {
+    if(strlen(recvpak.uuid) == 0) {
+      continue;
+    } else if (strncmp(uuid.c_str(), recvpak.uuid, sizeof recvpak.uuid) == 0) {
       // 鍙戦�佷笌鎺ュ彈鐨刄UID鍖归厤鎴愬姛
-      break;
+      goto LABLE_SUC;
     } else {
       // 绛旈潪鎵�闂紝鏀惧埌缂撳瓨閲�
       sockt->recvbuf.insert({recvpak.uuid, recvpak});
       continue;
     }
-
-    if(tryn == 0) {
-      // 灏濊瘯浜唗ryn娆¢兘娌℃湁鎴愬姛
-      return EBUS_RECVFROM_WRONG_END;
-    }
-
   }
+
+LABLE_FAIL:
+  return EBUS_RECVFROM_WRONG_END;
+  // return rv;
  
 LABLE_SUC:
  if(recv_buf != NULL) {
@@ -244,6 +245,8 @@
 
   return 0;
 
+
+
 }
 
 /**
diff --git a/test_net_socket/test_net_mod_socket.cpp b/test_net_socket/test_net_mod_socket.cpp
index 7f659c2..2ebbd06 100644
--- a/test_net_socket/test_net_mod_socket.cpp
+++ b/test_net_socket/test_net_mod_socket.cpp
@@ -131,11 +131,12 @@
   }
 }
 
-void *ser;
+void *serverSockt;
+
 static void _recvandsend_callback_(void *recvbuf, int recvsize, int key, void **sendbuf_ptr, int *sendsize_ptr, void * user_data) {
   char sendbuf[512];
   printf( "server: RECEIVED REQUEST FROM  %d : %s\n", key, (char *)recvbuf);
-  sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(ser), (char *)recvbuf);
+  sprintf(sendbuf, "%d RECEIVED %s", net_mod_socket_get_key(serverSockt), (char *)recvbuf);
   // buf 鍜� size鏄繑鍥炲��
   *sendbuf_ptr = sendbuf;
   *sendsize_ptr = strlen(sendbuf) + 1;
@@ -147,12 +148,12 @@
 
 void start_reply(int mkey) {
   printf("start reply\n");
-  ser = net_mod_socket_open();
-  net_mod_socket_bind(ser, mkey);
+  serverSockt = net_mod_socket_open();
+  net_mod_socket_bind(serverSockt, mkey);
  
   int rv;
   while(true) {
-    rv = net_mod_socket_recvandsend_timeout(ser, _recvandsend_callback_ , 0, 2000000, NULL );
+    rv = net_mod_socket_recvandsend_timeout(serverSockt, _recvandsend_callback_ , 0, 2000000, NULL );
   }
   // while ( (rv = net_mod_socket_recvfrom(ser, &recvbuf, &size, &key) ) == 0) {
   //  // printf( "server: RECEIVED REQUEST FROM  %d NAME %s\n", key, recvbuf);

--
Gitblit v1.8.0