diff options
| author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2015-02-17 18:55:30 +0100 |
|---|---|---|
| committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2015-02-21 00:17:27 +0100 |
| commit | b7bef5dad4bd336ba7985b219f67a7d72cfe091d (patch) | |
| tree | 72446f1a5e31c8f92b3f967a2643793cdf5fa097 | |
| parent | 892a08b5eaf361e10f41386197366f54451a64eb (diff) | |
| download | libsoup-b7bef5dad4bd336ba7985b219f67a7d72cfe091d.tar.gz | |
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
| -rw-r--r-- | 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 818ac993..0881ef47 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; |
