Merge pull request #671 from iamqizhao/master
Fix a race of onRead couting
This commit is contained in:
@ -579,6 +579,11 @@ func (t *http2Client) getStream(f http2.Frame) (*Stream, bool) {
|
|||||||
// Window updates will deliver to the controller for sending when
|
// Window updates will deliver to the controller for sending when
|
||||||
// the cumulative quota exceeds the corresponding threshold.
|
// the cumulative quota exceeds the corresponding threshold.
|
||||||
func (t *http2Client) updateWindow(s *Stream, n uint32) {
|
func (t *http2Client) updateWindow(s *Stream, n uint32) {
|
||||||
|
s.mu.Lock()
|
||||||
|
defer s.mu.Unlock()
|
||||||
|
if s.state == streamDone {
|
||||||
|
return
|
||||||
|
}
|
||||||
if w := t.fc.onRead(n); w > 0 {
|
if w := t.fc.onRead(n); w > 0 {
|
||||||
t.controlBuf.put(&windowUpdate{0, w})
|
t.controlBuf.put(&windowUpdate{0, w})
|
||||||
}
|
}
|
||||||
|
@ -303,6 +303,11 @@ func (t *http2Server) getStream(f http2.Frame) (*Stream, bool) {
|
|||||||
// Window updates will deliver to the controller for sending when
|
// Window updates will deliver to the controller for sending when
|
||||||
// the cumulative quota exceeds the corresponding threshold.
|
// the cumulative quota exceeds the corresponding threshold.
|
||||||
func (t *http2Server) updateWindow(s *Stream, n uint32) {
|
func (t *http2Server) updateWindow(s *Stream, n uint32) {
|
||||||
|
s.mu.Lock()
|
||||||
|
defer s.mu.Unlock()
|
||||||
|
if s.state == streamDone {
|
||||||
|
return
|
||||||
|
}
|
||||||
if w := t.fc.onRead(n); w > 0 {
|
if w := t.fc.onRead(n); w > 0 {
|
||||||
t.controlBuf.put(&windowUpdate{0, w})
|
t.controlBuf.put(&windowUpdate{0, w})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user