From 35db64de36421218229928969be269bd99a65ae6 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Thu, 28 Jan 2016 15:59:36 -0800 Subject: [PATCH 1/2] Tune the server accepting code --- server.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/server.go b/server.go index be4d4e63..48c04ff6 100644 --- a/server.go +++ b/server.go @@ -262,18 +262,21 @@ func (s *Server) Serve(lis net.Listener) error { c.Close() return nil } - st, err := transport.NewServerTransport("http2", c, s.opts.maxConcurrentStreams, authInfo) - if err != nil { - s.errorf("NewServerTransport(%q) failed: %v", c.RemoteAddr(), err) - s.mu.Unlock() - c.Close() - grpclog.Println("grpc: Server.Serve failed to create ServerTransport: ", err) - continue - } - s.conns[st] = true s.mu.Unlock() go func() { + st, err := transport.NewServerTransport("http2", c, s.opts.maxConcurrentStreams, authInfo) + if err != nil { + s.mu.Lock() + s.errorf("NewServerTransport(%q) failed: %v", c.RemoteAddr(), err) + s.mu.Unlock() + c.Close() + grpclog.Println("grpc: Server.Serve failed to create ServerTransport: ", err) + return + } + s.mu.Lock() + s.conns[st] = true + s.mu.Unlock() var wg sync.WaitGroup st.HandleStreams(func(stream *transport.Stream) { var trInfo *traceInfo From 9ec0eadc55a374c523740063ab526e8ebd567f7f Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Thu, 28 Jan 2016 18:51:38 -0800 Subject: [PATCH 2/2] fix a nil map access bug --- server.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server.go b/server.go index 48c04ff6..dd864275 100644 --- a/server.go +++ b/server.go @@ -274,7 +274,12 @@ func (s *Server) Serve(lis net.Listener) error { grpclog.Println("grpc: Server.Serve failed to create ServerTransport: ", err) return } + defer st.Close() s.mu.Lock() + if s.conns == nil { + s.mu.Unlock() + return + } s.conns[st] = true s.mu.Unlock() var wg sync.WaitGroup