summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <heftig@archlinux.org>2022-10-20 23:32:13 +0000
committerJan Alexander Steffens (heftig) <heftig@archlinux.org>2022-10-21 10:57:14 +0000
commit8f8149d371b0b2cd188db57a58fc581f043265fe (patch)
tree3638b45355cf287cdfbada7e87191c40abaa6c73
parent030ef0e472c8b0152f6efa9b19faa1dc58829546 (diff)
downloadlibsoup-8f8149d371b0b2cd188db57a58fc581f043265fe.tar.gz
server-connection: Ensure we clean up the socket
If the `conn` has been freed due to stealing, we don't disconnect but we still need to clean up the socket. Fixes: https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/321#note_1578921
-rw-r--r--libsoup/server/soup-server-connection.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libsoup/server/soup-server-connection.c b/libsoup/server/soup-server-connection.c
index 380ac42b..07a8fb5f 100644
--- a/libsoup/server/soup-server-connection.c
+++ b/libsoup/server/soup-server-connection.c
@@ -108,10 +108,12 @@ soup_server_connection_finalize (GObject *object)
SoupServerConnection *conn = SOUP_SERVER_CONNECTION (object);
SoupServerConnectionPrivate *priv = soup_server_connection_get_instance_private (conn);
- if (priv->conn)
+ if (priv->conn) {
disconnect_internal (conn);
-
- g_clear_pointer (&priv->io_data, soup_server_message_io_destroy);
+ } else {
+ g_clear_object (&priv->socket);
+ g_clear_pointer (&priv->io_data, soup_server_message_io_destroy);
+ }
g_clear_object (&priv->iostream);