From 6d69ca36a755ea44e7ce4ba7b135afb0b9dbff05 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Thu, 24 Jul 2014 12:25:41 +0200
Subject: [PATCH] Peer reconnect attempt

---
 peer.go | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/peer.go b/peer.go
index 16340cda5..ac4ba82ab 100644
--- a/peer.go
+++ b/peer.go
@@ -177,10 +177,20 @@ func NewOutboundPeer(addr string, ethereum *Ethereum, caps Caps) *Peer {
 
 	// Set up the connection in another goroutine so we don't block the main thread
 	go func() {
-		conn, err := net.DialTimeout("tcp", addr, 10*time.Second)
+		var (
+			err  error
+			conn net.Conn
+		)
+
+		for attempts := 0; attempts < 5; attempts++ {
+			conn, err = net.DialTimeout("tcp", addr, 10*time.Second)
+			if err != nil {
+				peerlogger.Debugf("Peer connection failed. Retrying (%d/5)\n", attempts+1)
+			}
+		}
 
 		if err != nil {
-			peerlogger.Debugln("Connection to peer failed", err)
+			peerlogger.Debugln("Connection to peer failed. Giving up.", err)
 			p.Stop()
 			return
 		}
-- 
GitLab