diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2022-10-13 11:32:38 +0200 |
---|---|---|
committer | Carlos Garcia Campos <cgarcia@igalia.com> | 2022-10-13 11:32:38 +0200 |
commit | 49e1fe344f74dfcd077afdb22245ceea446414f4 (patch) | |
tree | 8ebca7cf3d4a79fdb9d6c908f9aa3ab3a0088b8b /libsoup | |
parent | 6be67842b7048060b14a7f2c1c12af6861343072 (diff) | |
download | libsoup-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.c | 12 |
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 |