moveonly: move SetSocketNonBlocking() from netbase to util/sock

To be converted to a method of the `Sock` class.
This commit is contained in:
Vasil Dimov 2022-07-05 12:20:42 +02:00
parent b4bac55679
commit 29f66f7682
No known key found for this signature in database
GPG key ID: 54DF06F64B55CBBF
4 changed files with 18 additions and 17 deletions

View file

@ -717,21 +717,6 @@ bool LookupSubNet(const std::string& subnet_str, CSubNet& subnet_out)
return false;
}
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;
}
void InterruptSocks5(bool interrupt)
{
interruptSocks5Recv = interrupt;

View file

@ -221,8 +221,6 @@ bool ConnectSocketDirectly(const CService &addrConnect, const Sock& sock, int nT
*/
bool ConnectThroughProxy(const Proxy& proxy, const std::string& strDest, uint16_t port, const Sock& sock, int nTimeout, bool& outProxyConnectionFailed);
/** Enable non-blocking mode for a socket */
bool SetSocketNonBlocking(const SOCKET& hSocket);
void InterruptSocks5(bool interrupt);
/**

View file

@ -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)

View file

@ -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);