From ed1d69061013e15169877347274b83f9d04489c3 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 5 Feb 2021 20:21:03 +0100 Subject: [PATCH] Fix socket connect issue on interrupt --- lib/socket.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/socket.cpp b/lib/socket.cpp index aab43059..8676fa9d 100644 --- a/lib/socket.cpp +++ b/lib/socket.cpp @@ -873,7 +873,12 @@ void Socket::Connection::open(std::string host, int port, bool nonblock, bool wi for (rp = result; rp != NULL; rp = rp->ai_next){ sSend = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); if (sSend < 0){continue;} - if (connect(sSend, rp->ai_addr, rp->ai_addrlen) == 0){ + //Ensure we can handle interrupted system call case + int ret = 0; + do{ + ret = connect(sSend, rp->ai_addr, rp->ai_addrlen); + }while(ret && errno == EINTR); + if (!ret){ memcpy(&remoteaddr, rp->ai_addr, rp->ai_addrlen); break; }