summaryrefslogtreecommitdiff
path: root/rpc/service.go
diff options
context:
space:
mode:
Diffstat (limited to 'rpc/service.go')
-rw-r--r--rpc/service.go25
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
}