Commit 8fcf5f60 authored by Tatsuhiro Tsujikawa's avatar Tatsuhiro Tsujikawa

nghttp: Add --max-concurrent-streams option

parent c00f8e38
...@@ -95,7 +95,7 @@ constexpr auto anchors = std::array<Anchor, 5>{{ ...@@ -95,7 +95,7 @@ constexpr auto anchors = std::array<Anchor, 5>{{
} // namespace } // namespace
Config::Config() Config::Config()
: padding(0), : padding(0), max_concurrent_streams(100),
peer_max_concurrent_streams(NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS), peer_max_concurrent_streams(NGHTTP2_INITIAL_MAX_CONCURRENT_STREAMS),
header_table_size(-1), weight(NGHTTP2_DEFAULT_WEIGHT), multiply(1), header_table_size(-1), weight(NGHTTP2_DEFAULT_WEIGHT), multiply(1),
timeout(0.), window_bits(-1), connection_window_bits(-1), verbose(0), timeout(0.), window_bits(-1), connection_window_bits(-1), verbose(0),
...@@ -760,7 +760,7 @@ size_t populate_settings(nghttp2_settings_entry *iv) { ...@@ -760,7 +760,7 @@ size_t populate_settings(nghttp2_settings_entry *iv) {
size_t niv = 2; size_t niv = 2;
iv[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS; iv[0].settings_id = NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS;
iv[0].value = 100; iv[0].value = config.max_concurrent_streams;
iv[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE; iv[1].settings_id = NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
if (config.window_bits != -1) { if (config.window_bits != -1) {
...@@ -2435,6 +2435,9 @@ Options: ...@@ -2435,6 +2435,9 @@ Options:
hex+ASCII display). If SSL/TLS is used, decrypted data hex+ASCII display). If SSL/TLS is used, decrypted data
are used. are used.
--no-push Disable server push. --no-push Disable server push.
--max-concurrent-streams=<N>
The number of concurrent pushed streams this client
accepts.
--version Display version information and exit. --version Display version information and exit.
-h, --help Display this help and exit. -h, --help Display this help and exit.
...@@ -2488,6 +2491,7 @@ int main(int argc, char **argv) { ...@@ -2488,6 +2491,7 @@ int main(int argc, char **argv) {
{"trailer", required_argument, &flag, 9}, {"trailer", required_argument, &flag, 9},
{"hexdump", no_argument, &flag, 10}, {"hexdump", no_argument, &flag, 10},
{"no-push", no_argument, &flag, 11}, {"no-push", no_argument, &flag, 11},
{"max-concurrent-streams", required_argument, &flag, 12},
{nullptr, 0, nullptr, 0}}; {nullptr, 0, nullptr, 0}};
int option_index = 0; int option_index = 0;
int c = getopt_long(argc, argv, "M:Oab:c:d:gm:np:r:hH:vst:uw:W:", int c = getopt_long(argc, argv, "M:Oab:c:d:gm:np:r:hH:vst:uw:W:",
...@@ -2679,6 +2683,10 @@ int main(int argc, char **argv) { ...@@ -2679,6 +2683,10 @@ int main(int argc, char **argv) {
// no-push option // no-push option
config.no_push = true; config.no_push = true;
break; break;
case 12:
// max-concurrent-streams option
config.max_concurrent_streams = strtoul(optarg, nullptr, 10);
break;
} }
break; break;
default: default:
......
...@@ -70,6 +70,7 @@ struct Config { ...@@ -70,6 +70,7 @@ struct Config {
std::string harfile; std::string harfile;
nghttp2_option *http2_option; nghttp2_option *http2_option;
size_t padding; size_t padding;
size_t max_concurrent_streams;
ssize_t peer_max_concurrent_streams; ssize_t peer_max_concurrent_streams;
ssize_t header_table_size; ssize_t header_table_size;
int32_t weight; int32_t weight;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment