From 29f66f76826056f53d971ac734b7ed49b39848d3 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 5 Jul 2022 12:20:42 +0200 Subject: moveonly: move SetSocketNonBlocking() from netbase to util/sock To be converted to a method of the `Sock` class. --- src/util/sock.cpp | 15 +++++++++++++++ src/util/sock.h | 3 +++ 2 files changed, 18 insertions(+) (limited to 'src/util') diff --git a/src/util/sock.cpp b/src/util/sock.cpp index c312a88276..b2b5133629 100644 --- a/src/util/sock.cpp +++ b/src/util/sock.cpp @@ -117,6 +117,21 @@ int Sock::GetSockName(sockaddr* name, socklen_t* name_len) const return getsockname(m_socket, name, name_len); } +bool SetSocketNonBlocking(const SOCKET& hSocket) +{ +#ifdef WIN32 + u_long nOne = 1; + if (ioctlsocket(hSocket, FIONBIO, &nOne) == SOCKET_ERROR) { +#else + int fFlags = fcntl(hSocket, F_GETFL, 0); + if (fcntl(hSocket, F_SETFL, fFlags | O_NONBLOCK) == SOCKET_ERROR) { +#endif + return false; + } + + return true; +} + bool Sock::IsSelectable() const { #if defined(USE_POLL) || defined(WIN32) diff --git a/src/util/sock.h b/src/util/sock.h index ab9c6737c6..b97977da95 100644 --- a/src/util/sock.h +++ b/src/util/sock.h @@ -273,6 +273,9 @@ private: void Close(); }; +/** Enable non-blocking mode for a socket */ +bool SetSocketNonBlocking(const SOCKET& hSocket); + /** Return readable error string for a network error code */ std::string NetworkErrorString(int err); -- cgit v1.2.3