OSDN Git Service

fix ban node failed ban_peer
authorYahtoo Ma <yahtoo.ma@gmail.com>
Fri, 16 Aug 2019 04:35:18 +0000 (12:35 +0800)
committerYahtoo Ma <yahtoo.ma@gmail.com>
Fri, 16 Aug 2019 04:35:18 +0000 (12:35 +0800)
netsync/peer.go
netsync/tool_test.go
p2p/node_info.go
p2p/switch.go

index 4ce8881..468ce9e 100644 (file)
@@ -25,6 +25,7 @@ const (
 type BasePeer interface {
        Addr() net.Addr
        ID() string
+       RemoteAddrHost() string
        ServiceFlag() consensus.ServiceFlag
        TrafficStatus() (*flowrate.Status, *flowrate.Status)
        TrySend(byte, interface{}) bool
@@ -34,7 +35,7 @@ type BasePeer interface {
 //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
@@ -312,7 +313,7 @@ func (ps *peerSet) ProcessIllegal(peerID string, level byte, reason string) {
        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
index e241724..5e4a704 100644 (file)
@@ -48,6 +48,10 @@ func (p *P2PPeer) IsLAN() bool {
        return false
 }
 
+func (p *P2PPeer) RemoteAddrHost() string {
+       return ""
+}
+
 func (p *P2PPeer) ServiceFlag() consensus.ServiceFlag {
        return p.flag
 }
@@ -89,7 +93,7 @@ func NewPeerSet() *PeerSet {
        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
 }
 
index 9099f38..2efb011 100644 (file)
@@ -78,7 +78,7 @@ func (info *NodeInfo) listenHost() string {
 }
 
 //RemoteAddrHost peer external ip address
-func (info *NodeInfo) remoteAddrHost() string {
+func (info *NodeInfo) RemoteAddrHost() string {
        host, _, _ := net.SplitHostPort(info.RemoteAddr)
        return host
 }
index ac1bf69..6fc9ab3 100644 (file)
@@ -197,7 +197,7 @@ func (sw *Switch) AddPeer(pc *peerConn, isLAN bool) error {
        }
 
        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
        }
 
@@ -423,7 +423,7 @@ func (sw *Switch) dialPeerWorker(a *NetAddress, wg *sync.WaitGroup) {
 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