From 45f18042b7146079a11d463341e86f25a0cda2aa Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Thu, 15 Nov 2018 19:55:13 +0000 Subject: [PATCH 1/2] make accept loop --- server/rpc_server.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/server/rpc_server.go b/server/rpc_server.go index 76393391..c55908ab 100644 --- a/server/rpc_server.go +++ b/server/rpc_server.go @@ -397,11 +397,34 @@ func (s *rpcServer) Start() error { s.opts.Address = ts.Addr() s.Unlock() - go ts.Accept(s.accept) + exit := make(chan bool, 1) + + go func() { + for { + err := ts.Accept(s.accept) + + // check if we're supposed to exit + select { + case <-exit: + return + default: + } + + // check the error and backoff + if err != nil { + log.Logf("Accept error: %v", err) + time.Sleep(time.Second) + } + + // no error just exit + return + } + }() go func() { // wait for exit ch := <-s.exit + exit <- true // wait for requests to finish if wait(s.opts.Context) { From e69413b7637fced894570f94d03eafdca317f090 Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Thu, 15 Nov 2018 21:13:33 +0000 Subject: [PATCH 2/2] add continue --- server/rpc_server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/rpc_server.go b/server/rpc_server.go index c55908ab..bd6b04fa 100644 --- a/server/rpc_server.go +++ b/server/rpc_server.go @@ -414,6 +414,7 @@ func (s *rpcServer) Start() error { if err != nil { log.Logf("Accept error: %v", err) time.Sleep(time.Second) + continue } // no error just exit