diff --git a/src/h2load.cc b/src/h2load.cc index f749130f..a976f6bb 100644 --- a/src/h2load.cc +++ b/src/h2load.cc @@ -2033,6 +2033,7 @@ Options: Default: 1 -w, --window-bits= Sets the stream level initial window size to (2**)-1. + For QUIC, is capped to 23 (roughly 8MiB). Default: )" << config.window_bits << R"( -W, --connection-window-bits= diff --git a/src/h2load_quic.cc b/src/h2load_quic.cc index f1ac1694..b08ffd49 100644 --- a/src/h2load_quic.cc +++ b/src/h2load_quic.cc @@ -366,8 +366,10 @@ int Client::quic_init(const sockaddr *local_addr, socklen_t local_addrlen, } settings.initial_ts = timestamp(worker->loop); auto ¶ms = settings.transport_params; - params.initial_max_stream_data_bidi_local = (1 << config->window_bits) - 1; - params.initial_max_stream_data_uni = (1 << config->window_bits) - 1; + auto max_stream_data = + std::min((1 << 23) - 1, (1 << config->window_bits) - 1); + params.initial_max_stream_data_bidi_local = max_stream_data; + params.initial_max_stream_data_uni = max_stream_data; params.initial_max_data = (1 << config->connection_window_bits) - 1; params.initial_max_streams_bidi = 0; params.initial_max_streams_uni = 100;