OSDN Git Service

fix stop peer when request block failed
authorYongfeng LI <wliyongfeng@gmail.com>
Mon, 9 Apr 2018 08:40:50 +0000 (16:40 +0800)
committerYongfeng LI <wliyongfeng@gmail.com>
Mon, 9 Apr 2018 08:40:50 +0000 (16:40 +0800)
netsync/block_keeper.go
netsync/handle.go
netsync/peer.go

index 93b2075..d0951e5 100644 (file)
@@ -83,7 +83,11 @@ func (bk *blockKeeper) BlockRequestWorker(peerID string, maxPeerHeight uint64) e
                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)
index 77e2781..2438e09 100644 (file)
@@ -213,8 +213,3 @@ func (sm *SyncManager) DialSeeds(seeds []string) error {
 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)
-}
index f37cba5..484e5ff 100644 (file)
@@ -157,18 +157,6 @@ func (ps *peerSet) Unregister(id string) error {
        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()