summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2015-02-17 18:55:30 +0100
committerMarc-André Lureau <marcandre.lureau@gmail.com>2015-02-21 00:17:27 +0100
commitb7bef5dad4bd336ba7985b219f67a7d72cfe091d (patch)
tree72446f1a5e31c8f92b3f967a2643793cdf5fa097
parent892a08b5eaf361e10f41386197366f54451a64eb (diff)
downloadlibsoup-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.c8
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;