diff --git a/src/init.cpp b/src/init.cpp index d325ade..1d2d7cb 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -26,6 +26,7 @@ using namespace boost; CWallet* pwalletMain; CClientUIInterface uiInterface; +unsigned int nNodeLifespan; bool fUseFastIndex; @@ -351,6 +352,8 @@ bool AppInit2() // ********************************************************* Step 2: parameter interactions + nNodeLifespan = GetArg("-addrlifespan", 7); + fTestNet = GetBoolArg("-testnet"); if (fTestNet) { SoftSetBoolArg("-irc", true); diff --git a/src/main.cpp b/src/main.cpp index 16282e4..e5dca48 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3459,10 +3459,13 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) else if (strCommand == "getaddr") { + // Don't return addresses older than nCutOff timestamp + int64 nCutOff = GetTime() - (nNodeLifespan * 24 * 60 * 60); pfrom->vAddrToSend.clear(); vector vAddr = addrman.GetAddr(); BOOST_FOREACH(const CAddress &addr, vAddr) - pfrom->PushAddress(addr); + if(addr.nTime > nCutOff) + pfrom->PushAddress(addr); } diff --git a/src/main.h b/src/main.h index f78819c..debcc78 100644 --- a/src/main.h +++ b/src/main.h @@ -68,6 +68,7 @@ extern std::set > setStakeSeen; extern uint256 hashGenesisBlock; extern CBlockIndex* pindexGenesisBlock; extern unsigned int nStakeMinAge; +extern unsigned int nNodeLifespan; extern int nCoinbaseMaturity; extern int nBestHeight; extern CBigNum bnBestChainTrust;