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 8aba5f76925436a59239ea434a42f1384dacb780..4aaa1249baf247e48fd5ff503d5716e905face66 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