type BasePeer interface {
Addr() net.Addr
ID() string
+ RemoteAddrHost() string
ServiceFlag() consensus.ServiceFlag
TrafficStatus() (*flowrate.Status, *flowrate.Status)
TrySend(byte, interface{}) bool
//BasePeerSet is the intergace for connection level peer manager
type BasePeerSet interface {
StopPeerGracefully(string)
- IsBanned(peerID string, level byte, reason string) bool
+ IsBanned(ip string, level byte, reason string) bool
}
// PeerInfo indicate peer status snap
if peer == nil {
return
}
- if banned := ps.IsBanned(peer.Addr().String(), level, reason); banned {
+ if banned := ps.IsBanned(peer.RemoteAddrHost(), level, reason); banned {
ps.removePeer(peerID)
}
return
return false
}
+func (p *P2PPeer) RemoteAddrHost() string {
+ return ""
+}
+
func (p *P2PPeer) ServiceFlag() consensus.ServiceFlag {
return p.flag
}
return &PeerSet{}
}
-func (ps *PeerSet) IsBanned(peerID string, level byte, reason string) bool {
+func (ps *PeerSet) IsBanned(ip string, level byte, reason string) bool {
return false
}
}
//RemoteAddrHost peer external ip address
-func (info *NodeInfo) remoteAddrHost() string {
+func (info *NodeInfo) RemoteAddrHost() string {
host, _, _ := net.SplitHostPort(info.RemoteAddr)
return host
}
}
peer := newPeer(pc, peerNodeInfo, sw.reactorsByCh, sw.chDescs, sw.StopPeerForError, isLAN)
- if err := sw.security.DoFilter(peer.remoteAddrHost(), peer.PubKey().String()); err != nil {
+ if err := sw.security.DoFilter(peer.RemoteAddrHost(), peer.PubKey().String()); err != nil {
return err
}
func (sw *Switch) dialPeers(addresses []*NetAddress) {
connectedPeers := make(map[string]struct{})
for _, peer := range sw.Peers().List() {
- connectedPeers[peer.remoteAddrHost()] = struct{}{}
+ connectedPeers[peer.RemoteAddrHost()] = struct{}{}
}
var wg sync.WaitGroup