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 (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"container/list"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/ethereum/eth-go/ethchain"
|
"github.com/ethereum/eth-go/ethchain"
|
||||||
"github.com/ethereum/eth-go/ethutil"
|
"github.com/ethereum/eth-go/ethutil"
|
||||||
@ -515,6 +516,15 @@ func (p *Peer) Stop() {
|
|||||||
p.writeMessage(ethwire.NewMessage(ethwire.MsgDiscTy, ""))
|
p.writeMessage(ethwire.NewMessage(ethwire.MsgDiscTy, ""))
|
||||||
p.conn.Close()
|
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 {
|
func (p *Peer) pushHandshake() error {
|
||||||
|
Loading…
Reference in New Issue
Block a user