code: func (sp *serverPeer) OnGetAddr(_ *peer.Peer, msg *wire.MsgGetAddr) {
  	// Don't return any addresses when running on the simulation test
  	// network.  This helps prevent the network from becoming another
  	// public test network since it will not be able to learn about other
  	// peers that have not specifically been provided.
  	if cfg.SimNet {
  		return
  	}
  
  	// Do not accept getaddr requests from outbound peers.  This reduces
  	// fingerprinting attacks.
  	if !sp.Inbound() {
  		peerLog.Debugf("Ignoring getaddr request from outbound peer ",
  			"%v", sp)
  		return
  	}
  
  	// Only allow one getaddr request per connection to discourage
  	// address stamping of inv announcements.
  	if sp.sentAddrs {
  		peerLog.Debugf("Ignoring repeated getaddr request from peer ",
  			"%v", sp)
  		return
  	}
  	sp.sentAddrs = true
  
  	// Get the current known addresses from the address manager.
  	addrCache := sp.server.addrManager.AddressCache()
  
  	// Push the addresses.
  	sp.pushAddrMsg(addrCache)
  }
docs: // OnGetAddr is invoked when a peer receives a getaddr bitcoin message
  // and is used to provide the peer with known addresses from the address
  // manager.