summaryrefslogtreecommitdiff
path: root/libsoup/http2
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2022-04-22 13:15:22 +0200
committerCarlos Garcia Campos <cgarcia@igalia.com>2022-04-22 13:19:44 +0200
commit5a57bdee5078b94ccecdb00b0b88204c9c7a6585 (patch)
tree8ff134951f64f113727f23961213f84f5a138eaa /libsoup/http2
parent4fd79c8f9b7f75c57b54dfc5a44dedcd662be4f7 (diff)
downloadlibsoup-5a57bdee5078b94ccecdb00b0b88204c9c7a6585.tar.gz
http2: handle HTTP_1_1_REQUIRED stream error
Force http version in message to 1.1 and mark it to be restarted. Fixes #275
Diffstat (limited to 'libsoup/http2')
-rw-r--r--libsoup/http2/soup-client-message-io-http2.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libsoup/http2/soup-client-message-io-http2.c b/libsoup/http2/soup-client-message-io-http2.c
index e0d96241..6e9e48b3 100644
--- a/libsoup/http2/soup-client-message-io-http2.c
+++ b/libsoup/http2/soup-client-message-io-http2.c
@@ -960,8 +960,16 @@ on_stream_close_callback (nghttp2_session *session,
data->io->in_callback++;
- if (error_code == NGHTTP2_REFUSED_STREAM && data->state < STATE_READ_DATA)
+ switch (error_code) {
+ case NGHTTP2_REFUSED_STREAM:
+ if (data->state < STATE_READ_DATA)
+ data->can_be_restarted = TRUE;
+ break;
+ case NGHTTP2_HTTP_1_1_REQUIRED:
+ soup_message_set_force_http_version (data->item->msg, SOUP_HTTP_1_1);
data->can_be_restarted = TRUE;
+ break;
+ }
data->io->in_callback--;
return 0;