diff options
author | Gavin Andresen <gavinandresen@gmail.com> | 2013-11-03 21:52:25 -0800 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2013-11-03 21:52:25 -0800 |
commit | 97f844dd95c54b0fe2f2a1bb006c74ff544ff125 (patch) | |
tree | 6d08ffa5ec8ae6e5efd6953c6eed3d154d26155c /src/main.cpp | |
parent | a95a1c06b1823d13e8b685c6b18696ead1d17422 (diff) | |
parent | 75ef87dd936cd9c84d9a9fd3afce6198409636c4 (diff) | |
download | bitcoin-97f844dd95c54b0fe2f2a1bb006c74ff544ff125.tar.xz |
Merge pull request #3180 from pstratem/processgetdata
Reduce latency in network processing
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp index ecb9711664..4dc2e5c6ff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3155,6 +3155,9 @@ void static ProcessGetData(CNode* pfrom) // Track requests for our stuff. g_signals.Inventory(inv.hash); + + if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK) + break; } } @@ -3841,7 +3844,10 @@ bool ProcessMessages(CNode* pfrom) if (!pfrom->vRecvGetData.empty()) ProcessGetData(pfrom); - + + // this maintains the order of responses + if (!pfrom->vRecvGetData.empty()) return fOk; + std::deque<CNetMessage>::iterator it = pfrom->vRecvMsg.begin(); while (!pfrom->fDisconnect && it != pfrom->vRecvMsg.end()) { // Don't bother if send buffer is too full to respond anyway @@ -3929,6 +3935,8 @@ bool ProcessMessages(CNode* pfrom) if (!fRet) LogPrintf("ProcessMessage(%s, %u bytes) FAILED\n", strCommand.c_str(), nMessageSize); + + break; } // In case the connection got shut down, its receive buffer was wiped |