| 328 | const maxHPACKDynamicTableSize uint32 = 64 * 1024 |
| 329 | |
| 330 | func (sm *DefaultStreamManager) updateDecoderTableSize(sf *http2.SettingsFrame, isOutgoing bool) { |
| 331 | sf.ForeachSetting(func(s http2.Setting) error { |
| 332 | if s.ID == http2.SettingHeaderTableSize { |
| 333 | size := s.Val |
| 334 | if size > maxHPACKDynamicTableSize { |
| 335 | size = maxHPACKDynamicTableSize |
| 336 | } |
| 337 | if isOutgoing { |
| 338 | sm.decoderIn.SetMaxDynamicTableSize(size) |
| 339 | sm.logger.Debug("updated request HPACK decoder table size from server SETTINGS", |
| 340 | zap.Uint32("requested_size", s.Val), zap.Uint32("applied_size", size)) |
| 341 | } else { |
| 342 | sm.decoderOut.SetMaxDynamicTableSize(size) |
| 343 | sm.logger.Debug("updated response HPACK decoder table size from client SETTINGS", |
| 344 | zap.Uint32("requested_size", s.Val), zap.Uint32("applied_size", size)) |
| 345 | } |
| 346 | } |
| 347 | return nil |
| 348 | }) |
| 349 | } |
| 350 | |
| 351 | // processHeaderBlock decodes accumulated header fragments for the given side |
| 352 | func (sm *DefaultStreamManager) processHeaderBlock(s *HTTP2StreamState, isOutgoing bool) error { |