diff options
| author | Cory Fields <[email protected]> | 2016-12-31 02:05:17 -0500 |
|---|---|---|
| committer | Cory Fields <[email protected]> | 2017-01-12 23:05:09 -0500 |
| commit | 60befa3997b98d3f913010f2621bec734f643526 (patch) | |
| tree | 0fc70214f870118c3363ce5c27dd0ff679664ee7 | |
| parent | net: set message deserialization version when it's actually time to deserialize (diff) | |
| download | discoin-60befa3997b98d3f913010f2621bec734f643526.tar.xz discoin-60befa3997b98d3f913010f2621bec734f643526.zip | |
net: handle message accounting in ReceiveMsgBytes
This allows locking to be pushed down to only where it's needed
Also reuse the current time rather than checking multiple times.
| -rw-r--r-- | src/net.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/net.cpp b/src/net.cpp index 6d9971a0f..776047171 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -648,6 +648,9 @@ void CNode::copyStats(CNodeStats &stats) bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes, bool& complete) { complete = false; + int64_t nTimeMicros = GetTimeMicros(); + nLastRecv = nTimeMicros / 1000000; + nRecvBytes += nBytes; while (nBytes > 0) { // get current incomplete message, or create a new one @@ -685,7 +688,7 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes, bool& complete assert(i != mapRecvBytesPerMsgCmd.end()); i->second += msg.hdr.nMessageSize + CMessageHeader::HEADER_SIZE; - msg.nTime = GetTimeMicros(); + msg.nTime = nTimeMicros; complete = true; } } @@ -1237,8 +1240,6 @@ void CConnman::ThreadSocketHandler() pnode->CloseSocketDisconnect(); if(notify) condMsgProc.notify_one(); - pnode->nLastRecv = GetTime(); - pnode->nRecvBytes += nBytes; RecordBytesRecv(nBytes); } else if (nBytes == 0) |