Add retry logic for client socket
authorHwankyu Jhun <h.jhun@samsung.com>
Thu, 16 Dec 2021 08:14:38 +0000 (17:14 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 16 Dec 2021 08:27:50 +0000 (17:27 +0900)
To connect to the server, the retry logic is added to
the ClientSocket::Connect() method.

Change-Id: Ia95db3b22bdb18934561634004559fd8eed3da73
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/lib/socket/client_socket.cc

index d89d961..564f875 100644 (file)
@@ -64,7 +64,18 @@ void ClientSocket::Connect(const std::string& endpoint) {
       endpoint.c_str());
   struct sockaddr* sockaddr_ptr = reinterpret_cast<struct sockaddr*>(&sockaddr);
   socklen_t len = sizeof(sockaddr);
-  int ret = connect(fd_, sockaddr_ptr, len);
+
+  int ret;
+  int retry = 2;
+  do {
+    ret = connect(fd_, sockaddr_ptr, len);
+    if (ret == 0)
+      break;
+
+    retry--;
+    usleep(100 * 1000);
+  } while (retry > 0);
+
   fcntl(fd_, F_SETFL, flag);
   if (ret < 0) {
     ret = -errno;