diff options
Diffstat (limited to 'rpc/service.go')
-rw-r--r-- | rpc/service.go | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/rpc/service.go b/rpc/service.go index 4454f8e6..71f6fc41 100644 --- a/rpc/service.go +++ b/rpc/service.go @@ -52,20 +52,23 @@ func (s *Service) Serve() error { } defer ln.Close() - for { - select { - case <-s.stop: - return nil - default: - conn, err := ln.Accept() - if err != nil { - continue + go func() { + for { + select { + case <-s.stop: + break + default: + conn, err := ln.Accept() + if err != nil { + continue + } + + go s.rpc.ServeCodec(goridge.NewCodec(conn)) } - - go s.rpc.ServeCodec(goridge.NewCodec(conn)) } - } + }() + <-s.stop return nil } |