@@ -930,21 +930,15 @@ void PeerLogicValidation::ReattemptInitialBroadcast(CScheduler& scheduler) const
930930 scheduler.scheduleFromNow ([&] { ReattemptInitialBroadcast (scheduler); }, delta.count ());
931931}
932932
933- void PeerLogicValidation::FinalizeNode (const CNode& node, bool & fUpdateConnectionTime ) {
933+ void PeerLogicValidation::FinalizeNode (const CNode& node) {
934934 NodeId nodeid = node.GetId ();
935- fUpdateConnectionTime = false ;
936935 LOCK (cs_main);
937936 CNodeState *state = State (nodeid);
938937 assert (state != nullptr );
939938
940939 if (state->fSyncStarted )
941940 nSyncStarted--;
942941
943- if (state->nMisbehavior == 0 && state->fCurrentlyConnected /* && !node.IsBlockOnlyConn() */ ) {
944- // Note: we avoid changing visible addrman state for block-relay-only peers
945- fUpdateConnectionTime = true ;
946- }
947-
948942 for (const QueuedBlock& entry : state->vBlocksInFlight ) {
949943 mapBlocksInFlight.erase (entry.hash );
950944 }
@@ -964,6 +958,12 @@ void PeerLogicValidation::FinalizeNode(const CNode& node, bool& fUpdateConnectio
964958 assert (nPeersWithValidatedDownloads == 0 );
965959 assert (g_outbound_peers_with_protect_from_disconnect == 0 );
966960 }
961+ if (state->nMisbehavior == 0 && state->fCurrentlyConnected /* && !node.IsBlockOnlyConn() */ ) {
962+ // Only change visible addrman state for full outbound peers. We don't
963+ // call Connected() for feeler connections since they don't have
964+ // fSuccessfullyConnected set.
965+ m_addrman.Connected (node.addr );
966+ }
967967 LogPrint (BCLog::NET, " Cleared nodestate for peer=%d\n " , nodeid);
968968}
969969
@@ -1255,9 +1255,9 @@ static bool BlockRequestAllowed(const CBlockIndex* pindex, const Consensus::Para
12551255 (GetBlockProofEquivalentTime (*pindexBestHeader, *pindex, *pindexBestHeader, consensusParams) < STALE_RELAY_AGE_LIMIT);
12561256}
12571257
1258- PeerLogicValidation::PeerLogicValidation (CConnman* connmanIn, BanMan* banman, CScheduler &scheduler, ChainstateManager& chainman, CTxMemPool& pool ,
1259- std::unique_ptr<LLMQContext>& llmq_ctx) :
1260- connman(connmanIn), m_banman(banman), m_chainman(chainman), m_mempool(pool), m_llmq_ctx(llmq_ctx), m_stale_tip_check_time(0 )
1258+ PeerLogicValidation::PeerLogicValidation (CConnman* connmanIn, CAddrMan& addrman, BanMan* banman, CScheduler &scheduler, ChainstateManager& chainman,
1259+ CTxMemPool& pool, std::unique_ptr<LLMQContext>& llmq_ctx) :
1260+ connman(connmanIn), m_addrman(addrman), m_banman(banman), m_chainman(chainman), m_mempool(pool), m_llmq_ctx(llmq_ctx), m_stale_tip_check_time(0 )
12611261{
12621262 // Initialize global variables that cannot be constructed at startup.
12631263 recentRejects.reset (new CRollingBloomFilter (120000 , 0.000001 ));
@@ -2531,7 +2531,7 @@ std::pair<bool /*ret*/, bool /*do_return*/> static ValidateDSTX(CTxMemPool& memp
25312531}
25322532
25332533bool ProcessMessage (CNode* pfrom, const std::string& msg_type, CDataStream& vRecv, int64_t nTimeReceived,
2534- const CChainParams& chainparams, ChainstateManager& chainman, CTxMemPool& mempool,
2534+ const CChainParams& chainparams, ChainstateManager& chainman, CAddrMan& addrman, CTxMemPool& mempool,
25352535 LLMQContext& llmq_ctx, CConnman* connman, BanMan* banman, const std::atomic<bool >& interruptMsgProc)
25362536{
25372537 LogPrint (BCLog::NET, " received: %s (%u bytes) peer=%d\n " , SanitizeString (msg_type), vRecv.size (), pfrom->GetId ());
@@ -2578,7 +2578,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
25782578 nServices = ServiceFlags (nServiceInt);
25792579 if (!pfrom->fInbound )
25802580 {
2581- connman-> SetServices (pfrom->addr , nServices);
2581+ addrman. SetServices (pfrom->addr , nServices);
25822582 }
25832583 if (!pfrom->fInbound && !pfrom->fFeeler && !pfrom->m_manual_connection && !HasAllDesirableServiceFlags (nServices))
25842584 {
@@ -2717,7 +2717,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
27172717 // Get recent addresses
27182718 connman->PushMessage (pfrom, CNetMsgMaker (nSendVersion).Make (NetMsgType::GETADDR));
27192719 pfrom->fGetAddr = true ;
2720- connman-> MarkAddressGood (pfrom->addr );
2720+ addrman. Good (pfrom->addr );
27212721 }
27222722
27232723 std::string remoteAddr;
@@ -2895,7 +2895,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
28952895 if (fReachable )
28962896 vAddrOk.push_back (addr);
28972897 }
2898- connman-> AddNewAddresses (vAddrOk, pfrom->addr , 2 * 60 * 60 );
2898+ addrman. Add (vAddrOk, pfrom->addr , 2 * 60 * 60 );
28992899 if (vAddr.size () < 1000 )
29002900 pfrom->fGetAddr = false ;
29012901 if (pfrom->fOneShot )
@@ -3585,7 +3585,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& msg_type, CDataStream& vRec
35853585 } // cs_main
35863586
35873587 if (fProcessBLOCKTXN )
3588- return ProcessMessage (pfrom, NetMsgType::BLOCKTXN, blockTxnMsg, nTimeReceived, chainparams, chainman, mempool, llmq_ctx, connman, banman, interruptMsgProc);
3588+ return ProcessMessage (pfrom, NetMsgType::BLOCKTXN, blockTxnMsg, nTimeReceived, chainparams, chainman, addrman, mempool, llmq_ctx, connman, banman, interruptMsgProc);
35893589
35903590 if (fRevertToHeaderProcessing ) {
35913591 // Headers received from HB compact block peers are permitted to be
@@ -4180,7 +4180,7 @@ bool PeerLogicValidation::ProcessMessages(CNode* pfrom, std::atomic<bool>& inter
41804180 bool fRet = false ;
41814181 try
41824182 {
4183- fRet = ProcessMessage (pfrom, msg_type, msg.m_recv , msg.m_time , chainparams, m_chainman, m_mempool, *m_llmq_ctx, connman, m_banman, interruptMsgProc);
4183+ fRet = ProcessMessage (pfrom, msg_type, msg.m_recv , msg.m_time , chainparams, m_chainman, m_addrman, m_mempool, *m_llmq_ctx, connman, m_banman, interruptMsgProc);
41844184 if (interruptMsgProc)
41854185 return false ;
41864186 if (!pfrom->vRecvGetData .empty ())
0 commit comments