From 541af5236e69bcc86c6f993d09358173596483a7 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Sat, 22 Feb 2014 23:36:03 +0100 Subject: Consider that the connect() succeded if errno EISCONN Apparently on some systems, subsquent connect() calls may fail with EISCONN error, to indicate that the connection succeded in the background, instead of returning 0. --- src/network/socket_handler.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/network') diff --git a/src/network/socket_handler.cpp b/src/network/socket_handler.cpp index ee21bca..ca9d9e2 100644 --- a/src/network/socket_handler.cpp +++ b/src/network/socket_handler.cpp @@ -97,7 +97,8 @@ void SocketHandler::connect(const std::string& address, const std::string& port) for (struct addrinfo* rp = addr_res; rp; rp = rp->ai_next) { - if (::connect(this->socket, rp->ai_addr, rp->ai_addrlen) == 0) + if (::connect(this->socket, rp->ai_addr, rp->ai_addrlen) == 0 + || errno == EISCONN) { log_info("Connection success."); this->connected = true; -- cgit v1.2.3