func (t *http2Client) handleSettings(f *http2.SettingsFrame) { if f.IsAck() { return } var ss []http2.Setting f.ForeachSetting(func(s http2.Setting) error { ss = append(ss, s) return nil }) // The settings will be applied once the ack is sent. t.controlBuf.put(&settings{ack: true, ss: ss}) }
func (t *http2Server) handleSettings(f *http2.SettingsFrame) { if f.IsAck() { return } f.ForeachSetting(func(s http2.Setting) error { if v, ok := f.Value(http2.SettingInitialWindowSize); ok { t.mu.Lock() defer t.mu.Unlock() for _, s := range t.activeStreams { s.sendQuotaPool.reset(int(v - t.streamSendQuota)) } t.streamSendQuota = v } return nil }) t.controlBuf.put(&settings{ack: true}) }
func (t *http2Client) handleSettings(f *http2.SettingsFrame) { if f.IsAck() { return } f.ForeachSetting(func(s http2.Setting) error { if v, ok := f.Value(s.ID); ok { t.mu.Lock() defer t.mu.Unlock() switch s.ID { case http2.SettingMaxConcurrentStreams: t.maxStreams = v case http2.SettingInitialWindowSize: for _, s := range t.activeStreams { // Adjust the sending quota for each s. s.sendQuotaPool.reset(int(v - t.streamSendQuota)) } t.streamSendQuota = v } } return nil }) t.controlBuf.put(&settings{ack: true}) }