From 95ae83d54d3bbeed33db0998f4e867c773ad01ab Mon Sep 17 00:00:00 2001 From: Andy Wang Date: Sun, 7 Jun 2020 20:06:52 +0100 Subject: [PATCH] Accept retry delay. Prevent #120 --- internal/server/dispatcher.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/internal/server/dispatcher.go b/internal/server/dispatcher.go index 05358e7..7f833f7 100644 --- a/internal/server/dispatcher.go +++ b/internal/server/dispatcher.go @@ -17,10 +17,20 @@ import ( var b64 = base64.StdEncoding.EncodeToString func Serve(l net.Listener, sta *State) { + waitDur := [10]time.Duration{5 * time.Millisecond, 10 * time.Millisecond, 30 * time.Millisecond, 50 * time.Millisecond, + 100 * time.Millisecond, 300 * time.Millisecond, 500 * time.Millisecond, 1 * time.Second, + 3 * time.Second, 5 * time.Second} + + fails := 0 for { conn, err := l.Accept() if err != nil { - log.Errorf("%v", err) + if fails >= 10 { + log.Fatalf("could not accept more connections after 10 retries: %v", err) + } + log.Errorf("%v, retrying", err) + time.Sleep(waitDur[fails]) + fails++ continue } go dispatchConnection(conn, sta)