feat(http2): allow configuring the HTTP/2 frame size

The default of 16K is taken from h2.
This commit is contained in:
Geoffry Song
2020-05-28 16:07:31 -07:00
committed by Sean McArthur
parent 042c770603
commit b64464562a
4 changed files with 33 additions and 1 deletions

View File

@@ -30,12 +30,14 @@ type ConnEof = oneshot::Receiver<Never>;
// for performance.
const DEFAULT_CONN_WINDOW: u32 = 1024 * 1024 * 5; // 5mb
const DEFAULT_STREAM_WINDOW: u32 = 1024 * 1024 * 2; // 2mb
const DEFAULT_MAX_FRAME_SIZE: u32 = 1024 * 16; // 16kb
#[derive(Clone, Debug)]
pub(crate) struct Config {
pub(crate) adaptive_window: bool,
pub(crate) initial_conn_window_size: u32,
pub(crate) initial_stream_window_size: u32,
pub(crate) max_frame_size: u32,
#[cfg(feature = "runtime")]
pub(crate) keep_alive_interval: Option<Duration>,
#[cfg(feature = "runtime")]
@@ -50,6 +52,7 @@ impl Default for Config {
adaptive_window: false,
initial_conn_window_size: DEFAULT_CONN_WINDOW,
initial_stream_window_size: DEFAULT_STREAM_WINDOW,
max_frame_size: DEFAULT_MAX_FRAME_SIZE,
#[cfg(feature = "runtime")]
keep_alive_interval: None,
#[cfg(feature = "runtime")]
@@ -74,6 +77,7 @@ where
let (h2_tx, mut conn) = Builder::default()
.initial_window_size(config.initial_stream_window_size)
.initial_connection_window_size(config.initial_conn_window_size)
.max_frame_size(config.max_frame_size)
.enable_push(false)
.handshake::<_, SendBuf<B::Data>>(io)
.await