Skip to content

Commit

Permalink
P2P, cosmetic: break out buffer send(2) code into separate function
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Garzik authored and sipa committed Mar 29, 2013
1 parent 607dbfd commit bc2f5aa
Showing 1 changed file with 25 additions and 22 deletions.
47 changes: 25 additions & 22 deletions src/net.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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);
}

//
Expand Down

0 comments on commit bc2f5aa

Please sign in to comment.