Do not fatal when accept fails after 10 times

This commit is contained in:
Andy Wang 2020-06-08 00:29:56 +01:00
parent 95ae83d54d
commit 98a7b731f3
1 changed files with 7 additions and 7 deletions

View File

@ -17,22 +17,22 @@ import (
var b64 = base64.StdEncoding.EncodeToString var b64 = base64.StdEncoding.EncodeToString
func Serve(l net.Listener, sta *State) { func Serve(l net.Listener, sta *State) {
waitDur := [10]time.Duration{5 * time.Millisecond, 10 * time.Millisecond, 30 * time.Millisecond, 50 * time.Millisecond, waitDur := [10]time.Duration{
100 * time.Millisecond, 300 * time.Millisecond, 500 * time.Millisecond, 1 * time.Second, 50 * time.Millisecond, 100 * time.Millisecond, 300 * time.Millisecond, 500 * time.Millisecond, 1 * time.Second,
3 * time.Second, 5 * time.Second} 3 * time.Second, 5 * time.Second, 10 * time.Second, 15 * time.Second, 30 * time.Second}
fails := 0 fails := 0
for { for {
conn, err := l.Accept() conn, err := l.Accept()
if err != nil { if err != nil {
if fails >= 10 {
log.Fatalf("could not accept more connections after 10 retries: %v", err)
}
log.Errorf("%v, retrying", err) log.Errorf("%v, retrying", err)
time.Sleep(waitDur[fails]) time.Sleep(waitDur[fails])
if fails < 9 {
fails++ fails++
}
continue continue
} }
fails = 0
go dispatchConnection(conn, sta) go dispatchConnection(conn, sta)
} }
} }