diff options
author | Carlos Garcia Campos <cgarcia@igalia.com> | 2022-10-21 11:26:59 +0200 |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@gnome.org> | 2022-10-21 12:25:02 +0000 |
commit | d38bbf52fe6f3504829e02dd52c4a6d008e30031 (patch) | |
tree | 60a2b2be95f23370309e0c3323821c7d1d749132 | |
parent | 8f8149d371b0b2cd188db57a58fc581f043265fe (diff) | |
download | libsoup-d38bbf52fe6f3504829e02dd52c4a6d008e30031.tar.gz |
server: SoupServerConnection is leaked after being stolen
When soup_server_connection_steal() is called disconnected signal is not
emitted, so SoupServer doesn't remove the connection from the client
list.
-rw-r--r-- | libsoup/server/soup-server-connection.c | 2 | ||||
-rw-r--r-- | libsoup/server/soup-server-message.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/libsoup/server/soup-server-connection.c b/libsoup/server/soup-server-connection.c index 07a8fb5f..ccd8cb57 100644 --- a/libsoup/server/soup-server-connection.c +++ b/libsoup/server/soup-server-connection.c @@ -565,6 +565,8 @@ soup_server_connection_steal (SoupServerConnection *conn) g_clear_object (&priv->conn); g_clear_object (&priv->iostream); + g_signal_emit (conn, signals[DISCONNECTED], 0); + return stream; } diff --git a/libsoup/server/soup-server-message.c b/libsoup/server/soup-server-message.c index 8f40d2a0..ac34ad99 100644 --- a/libsoup/server/soup-server-message.c +++ b/libsoup/server/soup-server-message.c @@ -1105,7 +1105,6 @@ soup_server_message_steal_connection (SoupServerMessage *msg) g_object_ref (msg); stream = soup_server_connection_steal (msg->conn); g_signal_handlers_disconnect_by_data (msg, msg->conn); - connection_disconnected (msg); g_object_unref (msg); return stream; |