Protect bytesSent and bytesReceived with mutex to avoid datarace (#1318)
This commit is contained in:
@ -526,7 +526,9 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
|
|||||||
return nil, connectionErrorf(true, err, "transport: %v", err)
|
return nil, connectionErrorf(true, err, "transport: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
s.mu.Lock()
|
||||||
s.bytesSent = true
|
s.bytesSent = true
|
||||||
|
s.mu.Unlock()
|
||||||
|
|
||||||
if t.statsHandler != nil {
|
if t.statsHandler != nil {
|
||||||
outHeader := &stats.OutHeader{
|
outHeader := &stats.OutHeader{
|
||||||
@ -1009,7 +1011,9 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
s.mu.Lock()
|
||||||
s.bytesReceived = true
|
s.bytesReceived = true
|
||||||
|
s.mu.Unlock()
|
||||||
var state decodeState
|
var state decodeState
|
||||||
if err := state.decodeResponseHeader(frame); err != nil {
|
if err := state.decodeResponseHeader(frame); err != nil {
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
|
Reference in New Issue
Block a user