From 40e7a759a035a36611d6c9a3c2acb11ce1497727 Mon Sep 17 00:00:00 2001 From: Menghan Li Date: Mon, 19 Jun 2017 13:57:38 -0700 Subject: [PATCH] Protect bytesSent and bytesReceived with mutex to avoid datarace (#1318) --- transport/http2_client.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/transport/http2_client.go b/transport/http2_client.go index 6874a10a..f89045ec 100644 --- a/transport/http2_client.go +++ b/transport/http2_client.go @@ -526,7 +526,9 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea return nil, connectionErrorf(true, err, "transport: %v", err) } } + s.mu.Lock() s.bytesSent = true + s.mu.Unlock() if t.statsHandler != nil { outHeader := &stats.OutHeader{ @@ -1009,7 +1011,9 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { if !ok { return } + s.mu.Lock() s.bytesReceived = true + s.mu.Unlock() var state decodeState if err := state.decodeResponseHeader(frame); err != nil { s.mu.Lock()