Browse Source

Merge pull request #4381

806fd19 Allocate receive buffers in on the fly (Pieter Wuille)
0.10
Pieter Wuille 11 years ago
parent
commit
6b40eabbcf
No known key found for this signature in database
GPG Key ID: 8F653255C87992E0
  1. 6
      src/net.cpp

6
src/net.cpp

@ -678,7 +678,6 @@ int CNetMessage::readHeader(const char *pch, unsigned int nBytes)
// switch state to reading message data // switch state to reading message data
in_data = true; in_data = true;
vRecv.resize(hdr.nMessageSize);
return nCopy; return nCopy;
} }
@ -688,6 +687,11 @@ int CNetMessage::readData(const char *pch, unsigned int nBytes)
unsigned int nRemaining = hdr.nMessageSize - nDataPos; unsigned int nRemaining = hdr.nMessageSize - nDataPos;
unsigned int nCopy = std::min(nRemaining, nBytes); unsigned int nCopy = std::min(nRemaining, nBytes);
if (vRecv.size() < nDataPos + nCopy) {
// Allocate up to 256 KiB ahead, but never more than the total message size.
vRecv.resize(std::min(hdr.nMessageSize, nDataPos + nCopy + 256 * 1024));
}
memcpy(&vRecv[nDataPos], pch, nCopy); memcpy(&vRecv[nDataPos], pch, nCopy);
nDataPos += nCopy; nDataPos += nCopy;

Loading…
Cancel
Save