block, err := bk.BlockRequest(peerID, reqNum)
if errors.Root(err) == errPeerDropped || errors.Root(err) == errGetBlockTimeout || errors.Root(err) == errReqBlock {
log.WithField("Peer abnormality. PeerID: ", peerID).Info(err)
- bk.peers.DropPeer(peerID)
+ peer, ok := bk.peers.peers[peerID]
+ if !ok {
+ return errNotRegistered
+ }
+ bk.sw.StopPeerGracefully(peer.Peer)
return errCommAbnorm
}
isOrphan, err = bk.chain.ProcessBlock(block)
func (sm *SyncManager) Switch() *p2p.Switch {
return sm.sw
}
-
-func (sm *SyncManager) removePeer(peerID string) {
- sm.peers.DropPeer(peerID)
- log.Debug("Removing peer", "peerID:", peerID)
-}
return nil
}
-func (ps *peerSet) DropPeer(id string) error {
- ps.lock.Lock()
- defer ps.lock.Unlock()
-
- peer, ok := ps.peers[id]
- if !ok {
- return errNotRegistered
- }
- peer.CloseConn()
- return nil
-}
-
// Peer retrieves the registered peer with the given id.
func (ps *peerSet) Peer(id string) *peer {
ps.lock.RLock()