aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2015-02-13 21:50:14 +0800
committerFelix Lange <fjl@twurst.com>2015-02-13 22:06:47 +0800
commit5cc1256fd679cbb8cb80502494b8c02befc757c8 (patch)
tree1305c584d0c3c7afa9b97e62aa5212d4d33d6d35
parent7101f4499873fbf6a68cbe08a45797ff8ec71e74 (diff)
downloadgo-tangerine-5cc1256fd679cbb8cb80502494b8c02befc757c8.tar.gz
go-tangerine-5cc1256fd679cbb8cb80502494b8c02befc757c8.tar.zst
go-tangerine-5cc1256fd679cbb8cb80502494b8c02befc757c8.zip
p2p: ensure we don't dial ourself
addPeer doesn't allow self connects, but we can avoid opening connections in the first place.
-rw-r--r--p2p/server.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/p2p/server.go b/p2p/server.go
index b93340150..e510be521 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -289,10 +289,13 @@ func (srv *Server) dialLoop() {
go srv.findPeers()
case dest := <-srv.peerConnect:
+ // avoid dialing nodes that are already connected.
+ // there is another check for this in addPeer,
+ // which runs after the handshake.
srv.lock.Lock()
_, isconnected := srv.peers[dest.ID]
srv.lock.Unlock()
- if isconnected || dialing[dest.ID] {
+ if isconnected || dialing[dest.ID] || dest.ID == srv.ntab.Self() {
continue
}