Removed peers from peerlist as soon as they disconnect. Might fix #13
We used to wait for the reaping timer to clean up the peerlist, not any longer
This commit is contained in:
parent
8fe0864680
commit
52b664b0ae
10
peer.go
10
peer.go
|
@ -2,6 +2,7 @@ package eth
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"container/list"
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethchain"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
|
@ -515,6 +516,15 @@ func (p *Peer) Stop() {
|
|||
p.writeMessage(ethwire.NewMessage(ethwire.MsgDiscTy, ""))
|
||||
p.conn.Close()
|
||||
}
|
||||
|
||||
// Pre-emptively remove the peer; don't wait for reaping. We already know it's dead if we are here
|
||||
p.ethereum.peerMut.Lock()
|
||||
defer p.ethereum.peerMut.Unlock()
|
||||
eachPeer(p.ethereum.peers, func(peer *Peer, e *list.Element) {
|
||||
if peer == p {
|
||||
p.ethereum.peers.Remove(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func (p *Peer) pushHandshake() error {
|
||||
|
|
Loading…
Reference in New Issue