From bc786e6e327a5f35afd4286b09a1ce6c89340b85 Mon Sep 17 00:00:00 2001
From: karnem <mikhail.karnevskiy@desy.de>
Date: Tue, 16 Apr 2024 10:11:04 +0200
Subject: [PATCH] Set delay for TCP connection to 7 sec.

---
 common/cpp/src/system_io/system_io_linux_mac.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/common/cpp/src/system_io/system_io_linux_mac.cpp b/common/cpp/src/system_io/system_io_linux_mac.cpp
index 8aba5f769..4aaa1249b 100644
--- a/common/cpp/src/system_io/system_io_linux_mac.cpp
+++ b/common/cpp/src/system_io/system_io_linux_mac.cpp
@@ -207,13 +207,17 @@ void SystemIO::CollectMessageMetarmationRecursively(const std::string& path,
 void SystemIO::ApplyNetworkOptions(SocketDescriptor socket_fd, Error* err) const {
     //TODO: Need to change network layer code, so everything can be NonBlocking
     int flag = 1;
+    struct timeval timeout;
+    timeout.tv_sec  = 7;  // after 7 seconds connect() will timeout
+    timeout.tv_usec = 0;
+
     if (
         /*(flags = fcntl(socket_fd, F_GETFL, 0)) == -1
         ||
         fcntl(socket_fd, F_SETFL, flags | O_NONBLOCK) == -1
         ||*/
-        setsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF, (char*) &kNetBufferSize, sizeof(kNetBufferSize)) != 0
-        ||
+        setsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF, (char*) &kNetBufferSize, sizeof(kNetBufferSize)) != 0 ||
+        setsockopt(socket_fd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)) != 0 ||
         setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)) != 0 ||
         setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)) != 0 ||
         setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)) != 0
-- 
GitLab