net: Move IsSelectableSocket check into socket creation

We use select in ConnectSocketDirectly, so this check needs to happen before
that.

IsSelectableSocket will not be relevant after upcoming changes to remove select.
pull/476/merge
Cory Fields 7 years ago
parent 1729c29ded
commit 9e3b2f576b

@ -446,9 +446,7 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
SplitHostPort(std::string(pszDest), port, host); SplitHostPort(std::string(pszDest), port, host);
connected = ConnectThroughProxy(proxy, host, port, hSocket, nConnectTimeout, nullptr); connected = ConnectThroughProxy(proxy, host, port, hSocket, nConnectTimeout, nullptr);
} }
if (connected) { if (!connected) {
if (!IsSelectableSocket(hSocket)) {
LogPrintf("Cannot create connection: non-selectable socket created (fd >= FD_SETSIZE ?)\n");
CloseSocket(hSocket); CloseSocket(hSocket);
return nullptr; return nullptr;
} }
@ -461,9 +459,6 @@ CNode* CConnman::ConnectNode(CAddress addrConnect, const char *pszDest, bool fCo
pnode->AddRef(); pnode->AddRef();
return pnode; return pnode;
}
return nullptr;
} }
void CConnman::DumpBanlist() void CConnman::DumpBanlist()

@ -465,6 +465,12 @@ SOCKET CreateSocket(const CService &addrConnect)
if (hSocket == INVALID_SOCKET) if (hSocket == INVALID_SOCKET)
return INVALID_SOCKET; return INVALID_SOCKET;
if (!IsSelectableSocket(hSocket)) {
CloseSocket(hSocket);
LogPrintf("Cannot create connection: non-selectable socket created (fd >= FD_SETSIZE ?)\n");
return INVALID_SOCKET;
}
#ifdef SO_NOSIGPIPE #ifdef SO_NOSIGPIPE
int set = 1; int set = 1;
// Different way of disabling SIGPIPE on BSD // Different way of disabling SIGPIPE on BSD

Loading…
Cancel
Save