[doc] Explain address handling logic in process messages
Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>
This commit is contained in:
1 parent
dff16b184b
commit
ff6b9081ad
1 file changed
+18
@@ -2459,6 +2459,22 @@ void PeerLogicValidation::ProcessMessage(CNode& pfrom, const std::string& msg_ty
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!pfrom.IsInboundConn() && !pfrom.IsBlockOnlyConn()) {
|
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())
|
if (fListen && !::ChainstateActive().IsInitialBlockDownload())
|
||||||
{
|
{
|
||||||
CAddress addr = GetLocalAddress(&pfrom.addr, pfrom.GetLocalServices());
|
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));
|
m_connman.PushMessage(&pfrom, CNetMsgMaker(nSendVersion).Make(NetMsgType::GETADDR));
|
||||||
pfrom.fGetAddr = true;
|
pfrom.fGetAddr = true;
|
||||||
|
|
||||||
|
// Moves address from New to Tried table in Addrman, resolves
|
||||||
|
// tried-table collisions, etc.
|
||||||
m_connman.MarkAddressGood(pfrom.addr);
|
m_connman.MarkAddressGood(pfrom.addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user