From 8d93ecf3cd6f544cf67e67fb63b23382af7ca73a Mon Sep 17 00:00:00 2001 From: Zach Reyes Date: Mon, 11 Jul 2022 14:04:27 -0400 Subject: [PATCH] Fixed stream.fc being nil --- internal/transport/http2_client.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/transport/http2_client.go b/internal/transport/http2_client.go index 03691ef1b206..88d1e18632c2 100644 --- a/internal/transport/http2_client.go +++ b/internal/transport/http2_client.go @@ -685,8 +685,6 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, cleanup(err) return err } - s.fc = &inFlow{limit: uint32(t.initialWindowSize)} - t.activeStreams[id] = s if channelz.IsOn() { atomic.AddInt64(&t.czData.streamsStarted, 1) atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) @@ -719,6 +717,8 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, h.streamID = t.nextID t.nextID += 2 s.id = h.streamID + s.fc = &inFlow{limit: uint32(t.initialWindowSize)} + t.activeStreams[s.id] = s if t.streamQuota > 0 && t.waitingStreams > 0 { select { case t.streamsQuotaAvailable <- struct{}{}: @@ -744,10 +744,10 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, } for { success, err := t.controlBuf.executeAndPut(func(it interface{}) bool { - if !checkForStreamQuota(it) { + if !checkForHeaderListSize(it) { return false } - if !checkForHeaderListSize(it) { + if !checkForStreamQuota(it) { return false } return true