From 8a00560de2804fa8ab639c6e895ed3a7f1e75efc Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 30 Sep 2019 09:30:58 +0200 Subject: http2: move state-init from creation to pre-transfer To make sure that the HTTP/2 state is initialized correctly for duplicated handles. It would otherwise easily generate "spurious" PRIORITY frames to get sent over HTTP/2 connections when duplicated easy handles were used. Reported-by: Daniel Silverstone Fixes #4303 Closes #4442 --- lib/http2.c | 1 + lib/transfer.c | 1 + lib/url.c | 2 -- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/http2.c b/lib/http2.c index d2f5da17a..b5b831b56 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -1537,6 +1537,7 @@ static int h2_session_send(struct Curl_easy *data, H2BUGF(infof(data, "Queuing PRIORITY on stream %u (easy %p)\n", stream->stream_id, data)); + DEBUGASSERT(stream->stream_id != -1); rv = nghttp2_submit_priority(h2, NGHTTP2_FLAG_NONE, stream->stream_id, &pri_spec); if(rv) diff --git a/lib/transfer.c b/lib/transfer.c index 421c8d2d0..d0d4aeb50 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1510,6 +1510,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data) } } #endif + Curl_http2_init_state(&data->state); } return result; diff --git a/lib/url.c b/lib/url.c index 031f8f0c4..8538d24dd 100644 --- a/lib/url.c +++ b/lib/url.c @@ -619,8 +619,6 @@ CURLcode Curl_open(struct Curl_easy **curl) data->progress.flags |= PGRS_HIDE; data->state.current_speed = -1; /* init to negative == impossible */ - - Curl_http2_init_state(&data->state); } } -- cgit v1.2.1