uint32_t goaway_error; /* goaway error code from server */
int32_t remote_max_sid; /* max id processed by server */
int32_t local_max_sid; /* max id processed by us */
-#ifdef DEBUGBUILD
- int32_t stream_win_max; /* max h2 stream window size */
-#endif
BIT(initialized);
BIT(via_h1_upgrade);
BIT(conn_closed);
Curl_uint32_hash_init(&ctx->streams, 63, h2_stream_hash_free);
ctx->remote_max_sid = 2147483647;
ctx->via_h1_upgrade = via_h1_upgrade;
-#ifdef DEBUGBUILD
- {
- const char *p = getenv("CURL_H2_STREAM_WIN_MAX");
-
- ctx->stream_win_max = H2_STREAM_WINDOW_SIZE_MAX;
- if(p) {
- curl_off_t l;
- if(!curlx_str_number(&p, &l, INT_MAX))
- ctx->stream_win_max = (int32_t)l;
- }
- }
-#endif
ctx->initialized = TRUE;
}
else if(avail < INT32_MAX)
return (int32_t)avail;
}
-#ifdef DEBUGBUILD
- {
- struct cf_h2_ctx *ctx = cf->ctx;
- CURL_TRC_CF(data, cf, "stream_win_max=%d", ctx->stream_win_max);
- return ctx->stream_win_max;
- }
-#else
return H2_STREAM_WINDOW_SIZE_MAX;
-#endif
}
static CURLcode cf_h2_update_local_win(struct Curl_cfilter *cf,
# download serial via lib client, pause/resume at different offsets
@pytest.mark.parametrize("pause_offset", [0, 10*1024, 100*1023, 640000])
- @pytest.mark.parametrize("proto", ['http/1.1', 'h3'])
+ @pytest.mark.parametrize("proto", Env.http_protos())
def test_02_21_lib_serial(self, env: Env, httpd, nghttpx, proto, pause_offset):
- if proto == 'h3' and not env.have_h3():
- pytest.skip("h3 not supported")
count = 2
- docname = 'data-10m'
+ docname = 'data-1m'
url = f'https://localhost:{env.https_port}/{docname}'
client = LocalClient(name='cli_hx_download', env=env)
if not client.exists():
srcfile = os.path.join(httpd.docs_dir, docname)
self.check_downloads(client, srcfile, count)
- # h2 download parallel via lib client, pause/resume at different offsets
- # debug-override stream window size to reproduce #16955
- @pytest.mark.parametrize("pause_offset", [0, 10*1024, 100*1023, 640000])
- @pytest.mark.parametrize("swin_max", [0, 10*1024])
- @pytest.mark.skipif(condition=not Env.have_h2_curl(), reason="curl without h2")
- def test_02_21_h2_lib_serial(self, env: Env, httpd, pause_offset, swin_max):
- proto = 'h2'
- count = 2
- docname = 'data-10m'
- url = f'https://localhost:{env.https_port}/{docname}'
- run_env = os.environ.copy()
- run_env['CURL_DEBUG'] = 'multi,http/2'
- if swin_max > 0:
- run_env['CURL_H2_STREAM_WIN_MAX'] = f'{swin_max}'
- client = LocalClient(name='cli_hx_download', env=env, run_env=run_env)
- if not client.exists():
- pytest.skip(f'example client not built: {client.name}')
- r = client.run(args=[
- '-n', f'{count}', '-P', f'{pause_offset}', '-V', proto, url
- ])
- r.check_exit_code(0)
- srcfile = os.path.join(httpd.docs_dir, docname)
- self.check_downloads(client, srcfile, count)
-
# download via lib client, several at a time, pause/resume
@pytest.mark.parametrize("pause_offset", [100*1023])
@pytest.mark.parametrize("proto", Env.http_protos())