aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/protocol.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2015-01-06 19:14:29 +0800
committerFelix Lange <fjl@twurst.com>2015-01-06 19:23:38 +0800
commitb0ff946b55c23f0fffc50a700bcb255f95855afc (patch)
tree4b9ad93f4b7385146978eaaea5af974ec75b5ed2 /p2p/protocol.go
parenteb0e7b1b8120852a1d56aa0ebd3a98e652965635 (diff)
downloadgo-tangerine-b0ff946b55c23f0fffc50a700bcb255f95855afc.tar.gz
go-tangerine-b0ff946b55c23f0fffc50a700bcb255f95855afc.tar.zst
go-tangerine-b0ff946b55c23f0fffc50a700bcb255f95855afc.zip
p2p: move peerList back into baseProtocol
It had been moved to Peer, probably for debugging.
Diffstat (limited to 'p2p/protocol.go')
-rw-r--r--p2p/protocol.go24
1 files changed, 23 insertions, 1 deletions
diff --git a/p2p/protocol.go b/p2p/protocol.go
index 969937076..1d121a885 100644
--- a/p2p/protocol.go
+++ b/p2p/protocol.go
@@ -169,7 +169,7 @@ func (bp *baseProtocol) handle(rw MsgReadWriter) error {
case pongMsg:
case getPeersMsg:
- peers := bp.peer.PeerList()
+ peers := bp.peerList()
// this is dangerous. the spec says that we should _delay_
// sending the response if no new information is available.
// this means that would need to send a response later when
@@ -264,3 +264,25 @@ func (bp *baseProtocol) handshakeMsg() Msg {
bp.peer.ourID.Pubkey()[1:],
)
}
+
+func (bp *baseProtocol) peerList() []interface{} {
+ peers := bp.peer.otherPeers()
+ ds := make([]interface{}, 0, len(peers))
+ for _, p := range peers {
+ p.infolock.Lock()
+ addr := p.listenAddr
+ p.infolock.Unlock()
+ // filter out this peer and peers that are not listening or
+ // have not completed the handshake.
+ // TODO: track previously sent peers and exclude them as well.
+ if p == bp.peer || addr == nil {
+ continue
+ }
+ ds = append(ds, addr)
+ }
+ ourAddr := bp.peer.ourListenAddr
+ if ourAddr != nil && !ourAddr.IP.IsLoopback() && !ourAddr.IP.IsUnspecified() {
+ ds = append(ds, ourAddr)
+ }
+ return ds
+}