mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-20 14:05:23 +01:00
[doc] Explain address handling logic in process messages
Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>
This commit is contained in:
parent
dff16b184b
commit
ff6b9081ad
1 changed files with 18 additions and 0 deletions
|
@ -2459,6 +2459,22 @@ void PeerLogicValidation::ProcessMessage(CNode& pfrom, const std::string& msg_ty
|
|||
}
|
||||
|
||||
if (!pfrom.IsInboundConn() && !pfrom.IsBlockOnlyConn()) {
|
||||
// For outbound peers, we try to relay our address (so that other
|
||||
// nodes can try to find us more quickly, as we have no guarantee
|
||||
// that an outbound peer is even aware of how to reach us) and do a
|
||||
// one-time address fetch (to help populate/update our addrman). If
|
||||
// we're starting up for the first time, our addrman may be pretty
|
||||
// empty and no one will know who we are, so these mechanisms are
|
||||
// important to help us connect to the network.
|
||||
//
|
||||
// We also update the addrman to record connection success for
|
||||
// these peers (which include OUTBOUND_FULL_RELAY and FEELER
|
||||
// connections) so that addrman will have an up-to-date notion of
|
||||
// which peers are online and available.
|
||||
//
|
||||
// We skip these operations for BLOCK_RELAY peers to avoid
|
||||
// potentially leaking information about our BLOCK_RELAY
|
||||
// connections via the addrman or address relay.
|
||||
if (fListen && !::ChainstateActive().IsInitialBlockDownload())
|
||||
{
|
||||
CAddress addr = GetLocalAddress(&pfrom.addr, pfrom.GetLocalServices());
|
||||
|
@ -2478,6 +2494,8 @@ void PeerLogicValidation::ProcessMessage(CNode& pfrom, const std::string& msg_ty
|
|||
m_connman.PushMessage(&pfrom, CNetMsgMaker(nSendVersion).Make(NetMsgType::GETADDR));
|
||||
pfrom.fGetAddr = true;
|
||||
|
||||
// Moves address from New to Tried table in Addrman, resolves
|
||||
// tried-table collisions, etc.
|
||||
m_connman.MarkAddressGood(pfrom.addr);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue