summaryrefslogtreecommitdiff
path: root/libsoup
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2022-10-13 11:32:38 +0200
committerCarlos Garcia Campos <cgarcia@igalia.com>2022-10-13 11:32:38 +0200
commit49e1fe344f74dfcd077afdb22245ceea446414f4 (patch)
tree8ebca7cf3d4a79fdb9d6c908f9aa3ab3a0088b8b /libsoup
parent6be67842b7048060b14a7f2c1c12af6861343072 (diff)
downloadlibsoup-49e1fe344f74dfcd077afdb22245ceea446414f4.tar.gz
http2: ensure connection is alive on IO finished
Diffstat (limited to 'libsoup')
-rw-r--r--libsoup/http2/soup-client-message-io-http2.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libsoup/http2/soup-client-message-io-http2.c b/libsoup/http2/soup-client-message-io-http2.c
index ca8eec5a..9ca2edb6 100644
--- a/libsoup/http2/soup-client-message-io-http2.c
+++ b/libsoup/http2/soup-client-message-io-http2.c
@@ -1416,6 +1416,7 @@ soup_client_message_io_http2_finished (SoupClientMessageIO *iface,
gpointer completion_data;
SoupMessageIOCompletion completion;
gboolean is_closed;
+ SoupConnection *conn;
data = get_data_for_message (io, msg);
@@ -1431,9 +1432,9 @@ soup_client_message_io_http2_finished (SoupClientMessageIO *iface,
is_closed = nghttp2_session_get_stream_user_data (io->session, data->stream_id) == NULL;
nghttp2_session_set_stream_user_data (io->session, data->stream_id, NULL);
- if (!io->is_shutdown && !is_closed) {
- SoupConnection *conn;
+ conn = g_weak_ref_get (&io->conn);
+ if (!io->is_shutdown && !is_closed) {
NGCHECK (nghttp2_submit_rst_stream (io->session, NGHTTP2_FLAG_NONE, data->stream_id,
completion == SOUP_MESSAGE_IO_COMPLETE ? NGHTTP2_NO_ERROR : NGHTTP2_CANCEL));
soup_http2_message_data_close (data);
@@ -1443,11 +1444,8 @@ soup_client_message_io_http2_finished (SoupClientMessageIO *iface,
if (!g_hash_table_add (io->closed_messages, data))
g_warn_if_reached ();
- conn = g_weak_ref_get (&io->conn);
- if (conn) {
+ if (conn)
soup_connection_set_in_use (conn, TRUE);
- g_object_unref (conn);
- }
io_try_write (io, !io->async);
} else {
@@ -1462,6 +1460,8 @@ soup_client_message_io_http2_finished (SoupClientMessageIO *iface,
if (io->is_shutdown)
soup_client_message_io_http2_terminate_session (io);
+
+ g_clear_object (&conn);
}
static void