Skip to content

Commit fe451fe

Browse files
committed
Merge pull request #4037 from gmaxwell/fdleaks
Prevent socket leak in ThreadSocketHandler.
2 parents 2f3308f + 0bd05b5 commit fe451fe

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

src/net.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -946,11 +946,7 @@ void ThreadSocketHandler()
946946
}
947947
else if (nInbound >= nMaxConnections - MAX_OUTBOUND_CONNECTIONS)
948948
{
949-
{
950-
LOCK(cs_setservAddNodeAddresses);
951-
if (!setservAddNodeAddresses.count(addr))
952-
closesocket(hSocket);
953-
}
949+
closesocket(hSocket);
954950
}
955951
else if (CNode::IsBanned(addr))
956952
{

src/netbase.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,10 @@ bool static Socks5(string strDest, int port, SOCKET& hSocket)
293293
case 0x03:
294294
{
295295
ret = recv(hSocket, pchRet3, 1, 0) != 1;
296-
if (ret)
296+
if (ret) {
297+
closesocket(hSocket);
297298
return error("Error reading from proxy");
299+
}
298300
int nRecv = pchRet3[0];
299301
ret = recv(hSocket, pchRet3, nRecv, 0) != nRecv;
300302
break;
@@ -501,6 +503,7 @@ bool ConnectSocket(const CService &addrDest, SOCKET& hSocketRet, int nTimeout)
501503
return false;
502504
break;
503505
default:
506+
closesocket(hSocket);
504507
return false;
505508
}
506509

@@ -532,7 +535,9 @@ bool ConnectSocketByName(CService &addr, SOCKET& hSocketRet, const char *pszDest
532535

533536
switch(nameproxy.second) {
534537
default:
535-
case 4: return false;
538+
case 4:
539+
closesocket(hSocket);
540+
return false;
536541
case 5:
537542
if (!Socks5(strDest, port, hSocket))
538543
return false;

0 commit comments

Comments
 (0)