From: yahtoo Date: Wed, 10 Jul 2019 12:02:17 +0000 (+0800) Subject: fix ban node failed (#256) X-Git-Tag: v1.0.5~165 X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=commitdiff_plain;h=f8b08ae822eec5e86e60863e5b00b6353490a6bd fix ban node failed (#256) --- diff --git a/netsync/chainmgr/tool_test.go b/netsync/chainmgr/tool_test.go index 63816417..65596754 100644 --- a/netsync/chainmgr/tool_test.go +++ b/netsync/chainmgr/tool_test.go @@ -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 } diff --git a/netsync/consensusmgr/block_fetcher_test.go b/netsync/consensusmgr/block_fetcher_test.go index 7ac1edf0..8d0df223 100644 --- a/netsync/consensusmgr/block_fetcher_test.go +++ b/netsync/consensusmgr/block_fetcher_test.go @@ -12,7 +12,7 @@ import ( type peerMgr struct { } -func (pm *peerMgr) IsBanned(peerID string, level byte, reason string) bool { +func (pm *peerMgr) IsBanned(ip string, level byte, reason string) bool { return false } diff --git a/netsync/peers/peer.go b/netsync/peers/peer.go index d0eb7eeb..e74a4589 100644 --- a/netsync/peers/peer.go +++ b/netsync/peers/peer.go @@ -36,6 +36,7 @@ var ( type BasePeer interface { Addr() net.Addr ID() string + RemoteAddrHost() string ServiceFlag() consensus.ServiceFlag TrafficStatus() (*flowrate.Status, *flowrate.Status) TrySend(byte, interface{}) bool @@ -45,7 +46,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 } type BroadcastMsg interface { @@ -417,7 +418,8 @@ 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 diff --git a/p2p/node_info.go b/p2p/node_info.go index e602a0d7..d0c52a9d 100644 --- a/p2p/node_info.go +++ b/p2p/node_info.go @@ -86,7 +86,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 } diff --git a/p2p/switch.go b/p2p/switch.go index ef8306d3..5cd234b0 100644 --- a/p2p/switch.go +++ b/p2p/switch.go @@ -19,8 +19,8 @@ import ( "github.com/vapor/p2p/discover/dht" "github.com/vapor/p2p/discover/mdns" "github.com/vapor/p2p/netutil" - "github.com/vapor/p2p/signlib" security "github.com/vapor/p2p/security" + "github.com/vapor/p2p/signlib" "github.com/vapor/version" ) @@ -199,7 +199,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()); err != nil { + if err := sw.security.DoFilter(peer.RemoteAddrHost(), peer.PubKey()); err != nil { return err } @@ -419,7 +419,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