summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2022-10-21 11:26:59 +0200
committerCarlos Garcia Campos <carlosgc@gnome.org>2022-10-21 12:25:02 +0000
commitd38bbf52fe6f3504829e02dd52c4a6d008e30031 (patch)
tree60a2b2be95f23370309e0c3323821c7d1d749132
parent8f8149d371b0b2cd188db57a58fc581f043265fe (diff)
downloadlibsoup-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.c2
-rw-r--r--libsoup/server/soup-server-message.c1
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;