http2: always EXPIRE_RUN_NOW unpaused http/2 transfers

- just increasing the http/2 flow window does not necessarily
  make a server send new data. It may already have exhausted
  the window before

Closes #11005
This commit is contained in:
Stefan Eissing 2023-04-24 12:50:44 +02:00 committed by Daniel Stenberg
parent fbea71f293
commit 5622e431ed
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -2210,6 +2210,15 @@ static CURLcode http2_data_pause(struct Curl_cfilter *cf,
if(result)
return result;
if(!pause) {
/* Unpausing a h2 transfer, requires it to be run again. The server
* may send new DATA on us increasing the flow window, and it may
* not. We may have already buffered and exhausted the new window
* by operating on things in flight during the handling of other
* transfers. */
drain_stream(cf, data, stream);
Curl_expire(data, 0, EXPIRE_RUN_NOW);
}
DEBUGF(infof(data, "Set HTTP/2 window size to %u for stream %u",
window, stream->id));