mirror of https://github.com/grpc/grpc-go.git
server: prevent hang in Go HTTP transport in some error cases (#3833)
This commit is contained in:
parent
b9bc8e75a6
commit
0e72e09474
|
|
@ -1156,11 +1156,9 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.
|
||||||
}
|
}
|
||||||
d, err := recvAndDecompress(&parser{r: stream}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp)
|
d, err := recvAndDecompress(&parser{r: stream}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if st, ok := status.FromError(err); ok {
|
if e := t.WriteStatus(stream, status.Convert(err)); e != nil {
|
||||||
if e := t.WriteStatus(stream, st); e != nil {
|
|
||||||
channelz.Warningf(logger, s.channelzID, "grpc: Server.processUnaryRPC failed to write status %v", e)
|
channelz.Warningf(logger, s.channelzID, "grpc: Server.processUnaryRPC failed to write status %v", e)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if channelz.IsOn() {
|
if channelz.IsOn() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue