diff options
author | Jan Alexander Steffens (heftig) <heftig@archlinux.org> | 2022-10-20 23:32:13 +0000 |
---|---|---|
committer | Jan Alexander Steffens (heftig) <heftig@archlinux.org> | 2022-10-21 10:57:14 +0000 |
commit | 8f8149d371b0b2cd188db57a58fc581f043265fe (patch) | |
tree | 3638b45355cf287cdfbada7e87191c40abaa6c73 /libsoup | |
parent | 030ef0e472c8b0152f6efa9b19faa1dc58829546 (diff) | |
download | libsoup-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
Diffstat (limited to 'libsoup')
-rw-r--r-- | libsoup/server/soup-server-connection.c | 8 |
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); |