From 1a4d8965874e06398408e5235be2b4e4c1f44dbf Mon Sep 17 00:00:00 2001 From: "wangzekun.zekin" Date: Fri, 24 Feb 2023 11:23:03 +0800 Subject: [PATCH] fix: data race on closeStream --- server.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 02bc5cd..8c62ce5 100644 --- a/server.go +++ b/server.go @@ -998,7 +998,8 @@ func (sc *serverConn) wroteFrame(res frameWriteResult) { case StreamError: // st may be unknown if the RST_STREAM was generated to reject bad input. if st, ok := sc.streams[v.StreamID]; ok { - sc.closeStream(st, v, false) + // if v.Code is ErrCodeNo, then we can release ctx safely + sc.closeStream(st, v, v.Code != ErrCodeNo) } case handlerPanicRST: sc.closeStream(wr.stream, errHandlerPanicked, false)