Limit number of warning messages logged by CNode's (#1273)
This commit is contained in:
parent
0233d87739
commit
70b2f3e083
14
src/net.cpp
14
src/net.cpp
@ -2386,6 +2386,8 @@ CNode::CNode(SOCKET hSocketIn, const CAddress& addrIn, const std::string& addrNa
|
|||||||
addr = addrIn;
|
addr = addrIn;
|
||||||
addrName = addrNameIn == "" ? addr.ToStringIPPort() : addrNameIn;
|
addrName = addrNameIn == "" ? addr.ToStringIPPort() : addrNameIn;
|
||||||
nVersion = 0;
|
nVersion = 0;
|
||||||
|
nNumWarningsSkipped = 0;
|
||||||
|
nLastWarningTime = 0;
|
||||||
strSubVer = "";
|
strSubVer = "";
|
||||||
fWhitelisted = false;
|
fWhitelisted = false;
|
||||||
fOneShot = false;
|
fOneShot = false;
|
||||||
@ -2446,8 +2448,16 @@ CNode::~CNode()
|
|||||||
void CNode::AskFor(const CInv& inv)
|
void CNode::AskFor(const CInv& inv)
|
||||||
{
|
{
|
||||||
if (mapAskFor.size() > MAPASKFOR_MAX_SZ || setAskFor.size() > SETASKFOR_MAX_SZ) {
|
if (mapAskFor.size() > MAPASKFOR_MAX_SZ || setAskFor.size() > SETASKFOR_MAX_SZ) {
|
||||||
LogPrintf("CNode::AskFor -- WARNING: inventory message dropped: mapAskFor.size = %d, setAskFor.size = %d, MAPASKFOR_MAX_SZ = %d, SETASKFOR_MAX_SZ = %d, peer=%d\n",
|
int64_t nNow = GetTime();
|
||||||
mapAskFor.size(), setAskFor.size(), MAPASKFOR_MAX_SZ, SETASKFOR_MAX_SZ, id);
|
if(nNow - nLastWarningTime > WARNING_INTERVAL) {
|
||||||
|
LogPrintf("CNode::AskFor -- WARNING: inventory message dropped: mapAskFor.size = %d, setAskFor.size = %d, MAPASKFOR_MAX_SZ = %d, SETASKFOR_MAX_SZ = %d, nSkipped = %d, peer=%d\n",
|
||||||
|
mapAskFor.size(), setAskFor.size(), MAPASKFOR_MAX_SZ, SETASKFOR_MAX_SZ, nNumWarningsSkipped, id);
|
||||||
|
nLastWarningTime = nNow;
|
||||||
|
nNumWarningsSkipped = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
++nNumWarningsSkipped;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// a peer may not have multiple non-responded queue positions for a single inv item
|
// a peer may not have multiple non-responded queue positions for a single inv item
|
||||||
|
@ -40,6 +40,8 @@ namespace boost {
|
|||||||
static const int PING_INTERVAL = 2 * 60;
|
static const int PING_INTERVAL = 2 * 60;
|
||||||
/** Time after which to disconnect, after waiting for a ping response (or inactivity). */
|
/** Time after which to disconnect, after waiting for a ping response (or inactivity). */
|
||||||
static const int TIMEOUT_INTERVAL = 20 * 60;
|
static const int TIMEOUT_INTERVAL = 20 * 60;
|
||||||
|
/** Minimum time between warnings printed to log. */
|
||||||
|
static const int WARNING_INTERVAL = 10 * 60;
|
||||||
/** The maximum number of entries in an 'inv' protocol message */
|
/** The maximum number of entries in an 'inv' protocol message */
|
||||||
static const unsigned int MAX_INV_SZ = 50000;
|
static const unsigned int MAX_INV_SZ = 50000;
|
||||||
/** The maximum number of new addresses to accumulate before announcing. */
|
/** The maximum number of new addresses to accumulate before announcing. */
|
||||||
@ -336,9 +338,11 @@ public:
|
|||||||
int64_t nLastRecv;
|
int64_t nLastRecv;
|
||||||
int64_t nTimeConnected;
|
int64_t nTimeConnected;
|
||||||
int64_t nTimeOffset;
|
int64_t nTimeOffset;
|
||||||
|
int64_t nLastWarningTime;
|
||||||
CAddress addr;
|
CAddress addr;
|
||||||
std::string addrName;
|
std::string addrName;
|
||||||
CService addrLocal;
|
CService addrLocal;
|
||||||
|
int nNumWarningsSkipped;
|
||||||
int nVersion;
|
int nVersion;
|
||||||
// strSubVer is whatever byte array we read from the wire. However, this field is intended
|
// strSubVer is whatever byte array we read from the wire. However, this field is intended
|
||||||
// to be printed out, displayed to humans in various forms and so on. So we sanitize it and
|
// to be printed out, displayed to humans in various forms and so on. So we sanitize it and
|
||||||
|
Loading…
Reference in New Issue
Block a user