Broadcast "peerList" event upon removing or adding peers
This commit is contained in:
parent
6c91ffcfbe
commit
f382221b28
22
ethereum.go
22
ethereum.go
|
@ -165,6 +165,8 @@ func (s *Ethereum) AddPeer(conn net.Conn) {
|
|||
ethutil.Config.Log.Debugf("[SERV] Max connected peers reached. Not adding incoming peer.")
|
||||
}
|
||||
}
|
||||
|
||||
s.reactor.Post("peerList", s.peers)
|
||||
}
|
||||
|
||||
func (s *Ethereum) ProcessPeerList(addrs []string) {
|
||||
|
@ -303,12 +305,26 @@ func (s *Ethereum) Peers() *list.List {
|
|||
}
|
||||
|
||||
func (s *Ethereum) reapPeers() {
|
||||
eachPeer(s.peers, func(p *Peer, e *list.Element) {
|
||||
if atomic.LoadInt32(&p.disconnect) == 1 || (p.inbound && (time.Now().Unix()-p.lastPong) > int64(5*time.Minute)) {
|
||||
s.removePeerElement(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Ethereum) removePeerElement(e *list.Element) {
|
||||
s.peerMut.Lock()
|
||||
defer s.peerMut.Unlock()
|
||||
|
||||
eachPeer(s.peers, func(p *Peer, e *list.Element) {
|
||||
if atomic.LoadInt32(&p.disconnect) == 1 || (p.inbound && (time.Now().Unix()-p.lastPong) > int64(5*time.Minute)) {
|
||||
s.peers.Remove(e)
|
||||
s.peers.Remove(e)
|
||||
|
||||
s.reactor.Post("peerList", s.peers)
|
||||
}
|
||||
|
||||
func (s *Ethereum) RemovePeer(p *Peer) {
|
||||
eachPeer(s.peers, func(peer *Peer, e *list.Element) {
|
||||
if peer == p {
|
||||
s.removePeerElement(e)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
9
peer.go
9
peer.go
|
@ -2,7 +2,6 @@ package eth
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"container/list"
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethchain"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
|
@ -523,13 +522,7 @@ func (p *Peer) Stop() {
|
|||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
})
|
||||
p.ethereum.RemovePeer(p)
|
||||
}
|
||||
|
||||
func (p *Peer) pushHandshake() error {
|
||||
|
|
Loading…
Reference in New Issue