Browse Source

Allocate receive buffers in on the fly

0.10
Pieter Wuille 11 years ago
parent
commit
806fd19ecb
  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