diff options
| author | Pieter Wuille <[email protected]> | 2013-10-15 00:34:20 +0200 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2014-06-09 23:06:56 +0200 |
| commit | f1920e86063d0ed008c6028d8223b0e21889bf75 (patch) | |
| tree | 73819080978357908611074ede88c08d503dadc2 /src/net.cpp | |
| parent | Merge pull request #4300 (diff) | |
| download | discoin-f1920e86063d0ed008c6028d8223b0e21889bf75.tar.xz discoin-f1920e86063d0ed008c6028d8223b0e21889bf75.zip | |
Ping automatically every 2 minutes (unconditionally)
... instead of after 30 minutes of no sending, for latency measurement
and keep-alive. Also, disconnect if no reply arrives within 20 minutes,
instead of 90 of inactivity (for peers supporting the 'pong' message).
Diffstat (limited to 'src/net.cpp')
| -rw-r--r-- | src/net.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/net.cpp b/src/net.cpp index 479f77c46..fe6e9337a 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1028,23 +1028,27 @@ void ThreadSocketHandler() // // Inactivity checking // - if (pnode->vSendMsg.empty()) - pnode->nLastSendEmpty = GetTime(); - if (GetTime() - pnode->nTimeConnected > 60) + int64_t nTime = GetTime(); + if (nTime - pnode->nTimeConnected > 60) { if (pnode->nLastRecv == 0 || pnode->nLastSend == 0) { LogPrint("net", "socket no message in first 60 seconds, %d %d\n", pnode->nLastRecv != 0, pnode->nLastSend != 0); pnode->fDisconnect = true; } - else if (GetTime() - pnode->nLastSend > 90*60 && GetTime() - pnode->nLastSendEmpty > 90*60) + else if (nTime - pnode->nLastSend > TIMEOUT_INTERVAL) { - LogPrintf("socket not sending\n"); + LogPrintf("socket sending timeout: %is\n", nTime - pnode->nLastSend); pnode->fDisconnect = true; } - else if (GetTime() - pnode->nLastRecv > 90*60) + else if (nTime - pnode->nLastRecv > (pnode->nVersion > BIP0031_VERSION ? TIMEOUT_INTERVAL : 90*60)) { - LogPrintf("socket inactivity timeout\n"); + LogPrintf("socket receive timeout: %is\n", nTime - pnode->nLastRecv); + pnode->fDisconnect = true; + } + else if (pnode->nPingNonceSent && pnode->nPingUsecStart + TIMEOUT_INTERVAL * 1000000 < GetTimeMicros()) + { + LogPrintf("ping timeout: %fs\n", 0.000001 * (GetTimeMicros() - pnode->nPingUsecStart)); pnode->fDisconnect = true; } } |