From 9a3c02f98356c8998b36bac648f9cdd6cb185bed Mon Sep 17 00:00:00 2001 From: Sorah Fukumori Date: Wed, 7 Oct 2020 06:21:57 +0900 Subject: [PATCH] http2_client: fix reader segfault on PROTOCOL_ERRORs (#3926) --- internal/transport/http2_client.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/internal/transport/http2_client.go b/internal/transport/http2_client.go index a12d6b89f..e73b77a15 100644 --- a/internal/transport/http2_client.go +++ b/internal/transport/http2_client.go @@ -1306,7 +1306,13 @@ func (t *http2Client) reader() { if s != nil { // use error detail to provide better err message code := http2ErrConvTab[se.Code] - msg := t.framer.fr.ErrorDetail().Error() + errorDetail := t.framer.fr.ErrorDetail() + var msg string + if errorDetail != nil { + msg = errorDetail.Error() + } else { + msg = "received invalid frame" + } t.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false) } continue