Browse Source

Retries for net.Listen to account for MacOSX socket close delay

pull/122/head
Jae Kwon 9 years ago
parent
commit
f91bc8d8c3
1 changed files with 12 additions and 1 deletions
  1. +12
    -1
      p2p/listener.go

+ 12
- 1
p2p/listener.go View File

@ -4,6 +4,7 @@ import (
"fmt"
"net"
"strconv"
"time"
. "github.com/tendermint/tendermint/common"
"github.com/tendermint/tendermint/p2p/upnp"
@ -30,6 +31,7 @@ type DefaultListener struct {
const (
numBufferedConnections = 10
defaultExternalPort = 8770
tryListenSeconds = 5
)
func splitHostPort(addr string) (host string, port int) {
@ -49,7 +51,16 @@ func NewDefaultListener(protocol string, lAddr string, requireUPNPHairpin bool)
lAddrIP, lAddrPort := splitHostPort(lAddr)
// Create listener
listener, err := net.Listen(protocol, lAddr)
var listener net.Listener
var err error
for i := 0; i < tryListenSeconds; i++ {
listener, err = net.Listen(protocol, lAddr)
if err == nil {
break
} else if i < tryListenSeconds-1 {
time.Sleep(time.Second * 1)
}
}
if err != nil {
PanicCrisis(err)
}


Loading…
Cancel
Save