@@ -567,35 +567,36 @@ http2_decode_header_blocks(HTTPHdr *hdr, const uint8_t *buf_start, const uint32_
567567}
568568
569569// Initialize this subsystem with librecords configs (for now)
570- uint32_t Http2::max_concurrent_streams_in = 100 ;
571- uint32_t Http2::min_concurrent_streams_in = 10 ;
572- uint32_t Http2::max_active_streams_in = 0 ;
573- bool Http2::throttling = false ;
574- uint32_t Http2::stream_priority_enabled = 0 ;
575- uint32_t Http2::initial_window_size = 65535 ;
576- uint32_t Http2::max_frame_size = 16384 ;
577- uint32_t Http2::header_table_size = 4096 ;
578- uint32_t Http2::max_header_list_size = 4294967295 ;
579- uint32_t Http2::accept_no_activity_timeout = 120 ;
580- uint32_t Http2::no_activity_timeout_in = 120 ;
581- uint32_t Http2::active_timeout_in = 0 ;
582- uint32_t Http2::push_diary_size = 256 ;
583- uint32_t Http2::zombie_timeout_in = 0 ;
584- float Http2::stream_error_rate_threshold = 0.1 ;
585- uint32_t Http2::stream_error_sampling_threshold = 10 ;
586- uint32_t Http2::max_settings_per_frame = 7 ;
587- uint32_t Http2::max_settings_per_minute = 14 ;
588- uint32_t Http2::max_settings_frames_per_minute = 14 ;
589- uint32_t Http2::max_ping_frames_per_minute = 60 ;
590- uint32_t Http2::max_priority_frames_per_minute = 120 ;
591- float Http2::min_avg_window_update = 2560.0 ;
592- uint32_t Http2::con_slow_log_threshold = 0 ;
593- uint32_t Http2::stream_slow_log_threshold = 0 ;
594- uint32_t Http2::header_table_size_limit = 65536 ;
595- uint32_t Http2::write_buffer_block_size = 262144 ;
596- float Http2::write_size_threshold = 0.5 ;
597- uint32_t Http2::write_time_threshold = 100 ;
598- uint32_t Http2::buffer_water_mark = 0 ;
570+ uint32_t Http2::max_concurrent_streams_in = 100 ;
571+ uint32_t Http2::min_concurrent_streams_in = 10 ;
572+ uint32_t Http2::max_active_streams_in = 0 ;
573+ bool Http2::throttling = false ;
574+ uint32_t Http2::stream_priority_enabled = 0 ;
575+ uint32_t Http2::initial_window_size_in = 65535 ;
576+ Http2FlowControlPolicy Http2::flow_control_policy_in = Http2FlowControlPolicy::STATIC_SESSION_AND_STATIC_STREAM;
577+ uint32_t Http2::max_frame_size = 16384 ;
578+ uint32_t Http2::header_table_size = 4096 ;
579+ uint32_t Http2::max_header_list_size = 4294967295 ;
580+ uint32_t Http2::accept_no_activity_timeout = 120 ;
581+ uint32_t Http2::no_activity_timeout_in = 120 ;
582+ uint32_t Http2::active_timeout_in = 0 ;
583+ uint32_t Http2::push_diary_size = 256 ;
584+ uint32_t Http2::zombie_timeout_in = 0 ;
585+ float Http2::stream_error_rate_threshold = 0.1 ;
586+ uint32_t Http2::stream_error_sampling_threshold = 10 ;
587+ uint32_t Http2::max_settings_per_frame = 7 ;
588+ uint32_t Http2::max_settings_per_minute = 14 ;
589+ uint32_t Http2::max_settings_frames_per_minute = 14 ;
590+ uint32_t Http2::max_ping_frames_per_minute = 60 ;
591+ uint32_t Http2::max_priority_frames_per_minute = 120 ;
592+ float Http2::min_avg_window_update = 2560.0 ;
593+ uint32_t Http2::con_slow_log_threshold = 0 ;
594+ uint32_t Http2::stream_slow_log_threshold = 0 ;
595+ uint32_t Http2::header_table_size_limit = 65536 ;
596+ uint32_t Http2::write_buffer_block_size = 262144 ;
597+ float Http2::write_size_threshold = 0.5 ;
598+ uint32_t Http2::write_time_threshold = 100 ;
599+ uint32_t Http2::buffer_water_mark = 0 ;
599600
600601void
601602Http2::init ()
@@ -604,7 +605,16 @@ Http2::init()
604605 REC_EstablishStaticConfigInt32U (min_concurrent_streams_in, " proxy.config.http2.min_concurrent_streams_in" );
605606 REC_EstablishStaticConfigInt32U (max_active_streams_in, " proxy.config.http2.max_active_streams_in" );
606607 REC_EstablishStaticConfigInt32U (stream_priority_enabled, " proxy.config.http2.stream_priority_enabled" );
607- REC_EstablishStaticConfigInt32U (initial_window_size, " proxy.config.http2.initial_window_size_in" );
608+ REC_EstablishStaticConfigInt32U (initial_window_size_in, " proxy.config.http2.initial_window_size_in" );
609+
610+ uint32_t flow_control_policy_in_int = 0 ;
611+ REC_EstablishStaticConfigInt32U (flow_control_policy_in_int, " proxy.config.http2.flow_control.in.policy" );
612+ if (flow_control_policy_in_int > 1 ) {
613+ Error (" Invalid value for proxy.config.http2.flow_control.in.policy: %d" , flow_control_policy_in_int);
614+ flow_control_policy_in_int = 0 ;
615+ }
616+ flow_control_policy_in = static_cast <Http2FlowControlPolicy>(flow_control_policy_in_int);
617+
608618 REC_EstablishStaticConfigInt32U (max_frame_size, " proxy.config.http2.max_frame_size" );
609619 REC_EstablishStaticConfigInt32U (header_table_size, " proxy.config.http2.header_table_size" );
610620 REC_EstablishStaticConfigInt32U (max_header_list_size, " proxy.config.http2.max_header_list_size" );
@@ -632,7 +642,7 @@ Http2::init()
632642 // If any settings is broken, ATS should not start
633643 ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, max_concurrent_streams_in}));
634644 ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, min_concurrent_streams_in}));
635- ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_INITIAL_WINDOW_SIZE, initial_window_size }));
645+ ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_INITIAL_WINDOW_SIZE, initial_window_size_in }));
636646 ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_MAX_FRAME_SIZE, max_frame_size}));
637647 ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_HEADER_TABLE_SIZE, header_table_size}));
638648 ink_release_assert (http2_settings_parameter_is_valid ({HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE, max_header_list_size}));
0 commit comments