[libsoup] soup-socket: fix disconnecting with iostream based sockets



commit b7bef5dad4bd336ba7985b219f67a7d72cfe091d
Author: Marc-André Lureau <marcandre lureau gmail com>
Date:   Tue Feb 17 18:55:30 2015 +0100

    soup-socket: fix disconnecting with iostream based sockets
    
    Rely on priv->conn to decide whether to call disconnect_internal() or
    not.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=744186

 libsoup/soup-socket.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/libsoup/soup-socket.c b/libsoup/soup-socket.c
index 818ac99..0881ef4 100644
--- a/libsoup/soup-socket.c
+++ b/libsoup/soup-socket.c
@@ -188,8 +188,10 @@ disconnect_internal (SoupSocket *sock, gboolean close)
        SoupSocketPrivate *priv = SOUP_SOCKET_GET_PRIVATE (sock);
 
        g_clear_object (&priv->gsock);
-       if (priv->conn && close)
+       if (priv->conn && close) {
                g_io_stream_close (priv->conn, NULL, NULL);
+               g_clear_object (&priv->conn);
+       }
 
        if (priv->read_src) {
                g_source_destroy (priv->read_src);
@@ -211,7 +213,7 @@ soup_socket_finalize (GObject *object)
                        g_warning ("Disposing socket %p during connect", object);
                g_object_unref (priv->connect_cancel);
        }
-       if (priv->gsock && priv->close_on_dispose) {
+       if (priv->conn && priv->close_on_dispose) {
                if (priv->clean_dispose)
                        g_warning ("Disposing socket %p while still connected", object);
                disconnect_internal (SOUP_SOCKET (object), TRUE);
@@ -1536,7 +1538,7 @@ soup_socket_disconnect (SoupSocket *sock)
                g_cancellable_cancel (priv->connect_cancel);
                return;
        } else if (g_mutex_trylock (&priv->iolock)) {
-               if (priv->gsock)
+               if (priv->conn)
                        disconnect_internal (sock, TRUE);
                else
                        already_disconnected = TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]