|
|
@ -3039,7 +3039,7 @@ void static ProcessGetData(CNode* pfrom) |
|
|
|
|
|
|
|
|
|
|
|
// Track requests for our stuff.
|
|
|
|
// Track requests for our stuff.
|
|
|
|
g_signals.Inventory(inv.hash); |
|
|
|
g_signals.Inventory(inv.hash); |
|
|
|
|
|
|
|
|
|
|
|
if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK) |
|
|
|
if (inv.type == MSG_BLOCK || inv.type == MSG_FILTERED_BLOCK) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
@ -3576,10 +3576,10 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) |
|
|
|
size_t nAvail = vRecv.in_avail(); |
|
|
|
size_t nAvail = vRecv.in_avail(); |
|
|
|
bool bPingFinished = false; |
|
|
|
bool bPingFinished = false; |
|
|
|
std::string sProblem; |
|
|
|
std::string sProblem; |
|
|
|
|
|
|
|
|
|
|
|
if (nAvail >= sizeof(nonce)) { |
|
|
|
if (nAvail >= sizeof(nonce)) { |
|
|
|
vRecv >> nonce; |
|
|
|
vRecv >> nonce; |
|
|
|
|
|
|
|
|
|
|
|
// Only process pong message if there is an outstanding ping (old ping without nonce should never pong)
|
|
|
|
// Only process pong message if there is an outstanding ping (old ping without nonce should never pong)
|
|
|
|
if (pfrom->nPingNonceSent != 0) { |
|
|
|
if (pfrom->nPingNonceSent != 0) { |
|
|
|
if (nonce == pfrom->nPingNonceSent) { |
|
|
|
if (nonce == pfrom->nPingNonceSent) { |
|
|
@ -3610,7 +3610,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) |
|
|
|
bPingFinished = true; |
|
|
|
bPingFinished = true; |
|
|
|
sProblem = "Short payload"; |
|
|
|
sProblem = "Short payload"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!(sProblem.empty())) { |
|
|
|
if (!(sProblem.empty())) { |
|
|
|
LogPrint("net", "pong %s %s: %s, %"PRIx64" expected, %"PRIx64" received, %"PRIszu" bytes\n", |
|
|
|
LogPrint("net", "pong %s %s: %s, %"PRIx64" expected, %"PRIx64" received, %"PRIszu" bytes\n", |
|
|
|
pfrom->addr.ToString().c_str(), |
|
|
|
pfrom->addr.ToString().c_str(), |
|
|
@ -3624,8 +3624,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) |
|
|
|
pfrom->nPingNonceSent = 0; |
|
|
|
pfrom->nPingNonceSent = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else if (strCommand == "alert") |
|
|
|
else if (strCommand == "alert") |
|
|
|
{ |
|
|
|
{ |
|
|
|
CAlert alert; |
|
|
|
CAlert alert; |
|
|
@ -3761,10 +3761,10 @@ bool ProcessMessages(CNode* pfrom) |
|
|
|
|
|
|
|
|
|
|
|
if (!pfrom->vRecvGetData.empty()) |
|
|
|
if (!pfrom->vRecvGetData.empty()) |
|
|
|
ProcessGetData(pfrom); |
|
|
|
ProcessGetData(pfrom); |
|
|
|
|
|
|
|
|
|
|
|
// this maintains the order of responses
|
|
|
|
// this maintains the order of responses
|
|
|
|
if (!pfrom->vRecvGetData.empty()) return fOk; |
|
|
|
if (!pfrom->vRecvGetData.empty()) return fOk; |
|
|
|
|
|
|
|
|
|
|
|
std::deque<CNetMessage>::iterator it = pfrom->vRecvMsg.begin(); |
|
|
|
std::deque<CNetMessage>::iterator it = pfrom->vRecvMsg.begin(); |
|
|
|
while (!pfrom->fDisconnect && it != pfrom->vRecvMsg.end()) { |
|
|
|
while (!pfrom->fDisconnect && it != pfrom->vRecvMsg.end()) { |
|
|
|
// Don't bother if send buffer is too full to respond anyway
|
|
|
|
// Don't bother if send buffer is too full to respond anyway
|
|
|
@ -3853,7 +3853,7 @@ bool ProcessMessages(CNode* pfrom) |
|
|
|
|
|
|
|
|
|
|
|
if (!fRet) |
|
|
|
if (!fRet) |
|
|
|
LogPrintf("ProcessMessage(%s, %u bytes) FAILED\n", strCommand.c_str(), nMessageSize); |
|
|
|
LogPrintf("ProcessMessage(%s, %u bytes) FAILED\n", strCommand.c_str(), nMessageSize); |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|