Broadcast "peerList" event upon removing or adding peers
This commit is contained in:
parent
6c91ffcfbe
commit
f382221b28
20
ethereum.go
20
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.")
|
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) {
|
func (s *Ethereum) ProcessPeerList(addrs []string) {
|
||||||
|
@ -303,12 +305,26 @@ func (s *Ethereum) Peers() *list.List {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Ethereum) reapPeers() {
|
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()
|
s.peerMut.Lock()
|
||||||
defer s.peerMut.Unlock()
|
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 (
|
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"
|
||||||
|
@ -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
|
// Pre-emptively remove the peer; don't wait for reaping. We already know it's dead if we are here
|
||||||
p.ethereum.peerMut.Lock()
|
p.ethereum.RemovePeer(p)
|
||||||
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