[libsoup] http2: fix state change from write headers to write data
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] http2: fix state change from write headers to write data
- Date: Tue, 18 May 2021 12:45:55 +0000 (UTC)
commit ebf90ab7ba41371a5102735386780a21b53f6f8c
Author: Carlos Garcia Campos <cgarcia igalia com>
Date: Tue May 18 12:00:59 2021 +0200
http2: fix state change from write headers to write data
It's never happening now because on_before_frame_send_callback is not
called for data frames.
libsoup/http2/soup-client-message-io-http2.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
---
diff --git a/libsoup/http2/soup-client-message-io-http2.c b/libsoup/http2/soup-client-message-io-http2.c
index b5e2c7df..94e09fa3 100644
--- a/libsoup/http2/soup-client-message-io-http2.c
+++ b/libsoup/http2/soup-client-message-io-http2.c
@@ -484,9 +484,6 @@ on_before_frame_send_callback (nghttp2_session *session,
case NGHTTP2_HEADERS:
advance_state_from (data, STATE_NONE, STATE_WRITE_HEADERS);
break;
- case NGHTTP2_DATA:
- advance_state_from (data, STATE_WRITE_HEADERS, STATE_WRITE_DATA);
- break;
}
return 0;
@@ -522,6 +519,8 @@ on_frame_send_callback (nghttp2_session *session,
case NGHTTP2_DATA:
h2_debug (user_data, data, "[SEND] [DATA] bytes=%zu, finished=%d",
frame->data.hd.length, frame->hd.flags & NGHTTP2_FLAG_END_STREAM);
+ if (data->state < STATE_WRITE_DATA)
+ advance_state_from (data, STATE_WRITE_HEADERS, STATE_WRITE_DATA);
if (data->metrics) {
data->metrics->request_body_bytes_sent += frame->hd.length + FRAME_HEADER_SIZE;
data->metrics->request_body_size += frame->data.hd.length;
@@ -529,7 +528,7 @@ on_frame_send_callback (nghttp2_session *session,
if (frame->data.hd.length)
soup_message_wrote_body_data (data->msg, frame->data.hd.length);
if (frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
- advance_state_from (data, STATE_ANY, STATE_WRITE_DONE);
+ advance_state_from (data, STATE_WRITE_DATA, STATE_WRITE_DONE);
soup_message_wrote_body (data->msg);
}
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]