MCPcopy Create free account
hub / github.com/DNAProject/DNA / AddrReqHandle

Function AddrReqHandle

p2pserver/message/utils/msg_handler.go:54–99  ·  view source on GitHub ↗

AddrReqHandle handles the neighbor address request from peer

(data *msgTypes.MsgPayload, p2p p2p.P2P, pid *evtActor.PID, args ...interface{})

Source from the content-addressed store, hash-verified

52
53// AddrReqHandle handles the neighbor address request from peer
54func AddrReqHandle(data *msgTypes.MsgPayload, p2p p2p.P2P, pid *evtActor.PID, args ...interface{}) {
55 log.Trace("[p2p]receive addr request message", data.Addr, data.Id)
56 remotePeer := p2p.GetPeer(data.Id)
57 if remotePeer == nil {
58 log.Debug("[p2p]remotePeer invalid in AddrReqHandle")
59 return
60 }
61
62 addrStr := p2p.GetNeighborAddrs()
63 //check mask peers
64 mskPeers := config.DefConfig.P2PNode.ReservedCfg.MaskPeers
65 if config.DefConfig.P2PNode.ReservedPeersOnly && len(mskPeers) > 0 {
66 mskPeerMap := make(map[string]bool)
67 for _, mskAddr := range mskPeers {
68 mskPeerMap[mskAddr] = true
69 }
70
71 // get remote peer IP
72 // if get remotePeerAddr failed, do masking anyway
73 remoteAddr, _ := remotePeer.GetAddr16()
74 var remoteIp net.IP = remoteAddr[:]
75
76 // remove msk peers from neigh-addr-list
77 // if remotePeer is in msk-list, skip masking
78 if _, isMskPeer := mskPeerMap[remoteIp.String()]; !isMskPeer {
79 mskAddrList := make([]msgCommon.PeerAddr, 0)
80 for _, addr := range addrStr {
81 var ip net.IP
82 ip = addr.IpAddr[:]
83 address := ip.To16().String()
84 if _, present := mskPeerMap[address]; !present {
85 mskAddrList = append(mskAddrList, addr)
86 }
87 }
88 // replace with mskAddrList
89 addrStr = mskAddrList
90 }
91 }
92
93 msg := msgpack.NewAddrs(addrStr)
94 err := p2p.Send(remotePeer, msg)
95 if err != nil {
96 log.Warn(err)
97 return
98 }
99}
100
101// HeaderReqHandle handles the header sync req from peer
102func HeadersReqHandle(data *msgTypes.MsgPayload, p2p p2p.P2P, pid *evtActor.PID, args ...interface{}) {

Callers 3

TestAddrReqHandleFunction · 0.85
TestAddrReqHandle_maskokFunction · 0.85

Calls 8

TraceFunction · 0.92
DebugFunction · 0.92
WarnFunction · 0.92
GetAddr16Method · 0.80
GetPeerMethod · 0.65
GetNeighborAddrsMethod · 0.65
SendMethod · 0.65
StringMethod · 0.45

Tested by 3

TestAddrReqHandleFunction · 0.68
TestAddrReqHandle_maskokFunction · 0.68