From 635b66acdccc1e9b3793c67a846675dfbb08b6f8 Mon Sep 17 00:00:00 2001
From: Felix Lange <fjl@twurst.com>
Date: Wed, 22 Apr 2015 10:59:15 +0200
Subject: [PATCH] p2p: return zero node from Self if the server is not running

This helps with fixing the tests for cmd/geth to run without networking.
---
 p2p/server.go | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/p2p/server.go b/p2p/server.go
index b5c4a1f59..ecf418d13 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -283,6 +283,11 @@ func (srv *Server) Stop() {
 
 // Self returns the local node's endpoint information.
 func (srv *Server) Self() *discover.Node {
+	srv.lock.RLock()
+	defer srv.lock.RUnlock()
+	if !srv.running {
+		return &discover.Node{IP: net.ParseIP("0.0.0.0")}
+	}
 	return srv.ntab.Self()
 }
 
@@ -471,7 +476,7 @@ func (srv *Server) checkPeer(id discover.NodeID) (bool, DiscReason) {
 		return false, DiscTooManyPeers
 	case srv.peers[id] != nil:
 		return false, DiscAlreadyConnected
-	case id == srv.Self().ID:
+	case id == srv.ntab.Self().ID:
 		return false, DiscSelf
 	default:
 		return true, 0
-- 
GitLab