good morning!!!!

Skip to content
Snippets Groups Projects
Commit f382221b authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

Broadcast "peerList" event upon removing or adding peers

parent 6c91ffcf
Branches
Tags
No related merge requests found
...@@ -165,6 +165,8 @@ func (s *Ethereum) AddPeer(conn net.Conn) { ...@@ -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 { ...@@ -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)
} }
}) })
} }
......
...@@ -2,7 +2,6 @@ package eth ...@@ -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() { ...@@ -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 {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment