P2P, cosmetic: break out buffer send(2) code into separate function
This commit is contained in:
parent
607dbfdeaf
commit
bc2f5aa72c
1 changed files with 25 additions and 22 deletions
47
src/net.cpp
47
src/net.cpp
|
@ -708,6 +708,30 @@ int CNetMessage::readData(const char *pch, unsigned int nBytes)
|
|||
|
||||
|
||||
|
||||
// requires LOCK(cs_vSend)
|
||||
void SocketSendData(CNode *pnode)
|
||||
{
|
||||
CDataStream& vSend = pnode->vSend;
|
||||
if (vSend.empty())
|
||||
return;
|
||||
|
||||
int nBytes = send(pnode->hSocket, &vSend[0], vSend.size(), MSG_NOSIGNAL | MSG_DONTWAIT);
|
||||
if (nBytes > 0)
|
||||
{
|
||||
vSend.erase(vSend.begin(), vSend.begin() + nBytes);
|
||||
pnode->nLastSend = GetTime();
|
||||
}
|
||||
else if (nBytes < 0)
|
||||
{
|
||||
// error
|
||||
int nErr = WSAGetLastError();
|
||||
if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
|
||||
{
|
||||
printf("socket send error %d\n", nErr);
|
||||
pnode->CloseSocketDisconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ThreadSocketHandler(void* parg)
|
||||
{
|
||||
|
@ -994,28 +1018,7 @@ void ThreadSocketHandler2(void* parg)
|
|||
{
|
||||
TRY_LOCK(pnode->cs_vSend, lockSend);
|
||||
if (lockSend)
|
||||
{
|
||||
CDataStream& vSend = pnode->vSend;
|
||||
if (!vSend.empty())
|
||||
{
|
||||
int nBytes = send(pnode->hSocket, &vSend[0], vSend.size(), MSG_NOSIGNAL | MSG_DONTWAIT);
|
||||
if (nBytes > 0)
|
||||
{
|
||||
vSend.erase(vSend.begin(), vSend.begin() + nBytes);
|
||||
pnode->nLastSend = GetTime();
|
||||
}
|
||||
else if (nBytes < 0)
|
||||
{
|
||||
// error
|
||||
int nErr = WSAGetLastError();
|
||||
if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
|
||||
{
|
||||
printf("socket send error %d\n", nErr);
|
||||
pnode->CloseSocketDisconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SocketSendData(pnode);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue