[libsoup] SoupConnection: don't listen to SoupSocket::disconnected



commit 3294110d20c189805940996623d6a35fe8cfa9ad
Author: Dan Winship <danw gnome org>
Date:   Thu Sep 27 21:39:43 2012 -0400

    SoupConnection: don't listen to SoupSocket::disconnected
    
    No one except SoupConnection ever calls soup_socket_disconnect() any
    more, so we don't need to listen to SoupSocket::disconnected to know
    when it happens.

 libsoup/soup-connection.c |   19 +------------------
 1 files changed, 1 insertions(+), 18 deletions(-)
---
diff --git a/libsoup/soup-connection.c b/libsoup/soup-connection.c
index 1889a94..2caded1 100644
--- a/libsoup/soup-connection.c
+++ b/libsoup/soup-connection.c
@@ -422,12 +422,6 @@ proxy_socket_event (SoupSocket          *socket,
 		soup_connection_event (conn, event, connection);
 }
 
-static void
-socket_disconnected (SoupSocket *sock, gpointer conn)
-{
-	soup_connection_disconnect (conn);
-}
-
 typedef struct {
 	SoupConnection *conn;
 	SoupConnectionCallback callback;
@@ -445,9 +439,6 @@ socket_connect_finished (SoupSocket *socket, guint status, gpointer user_data)
 	g_signal_handler_disconnect (socket, data->event_id);
 
 	if (SOUP_STATUS_IS_SUCCESSFUL (status)) {
-		g_signal_connect (priv->socket, "disconnected",
-				  G_CALLBACK (socket_disconnected), data->conn);
-
 		if (priv->ssl && !priv->proxy_uri) {
 			soup_connection_event (data->conn,
 					       G_SOCKET_CLIENT_TLS_HANDSHAKED,
@@ -668,9 +659,6 @@ soup_connection_connect_sync (SoupConnection *conn, GCancellable *cancellable)
 	}
 
 	if (SOUP_STATUS_IS_SUCCESSFUL (status)) {
-		g_signal_connect (priv->socket, "disconnected",
-				  G_CALLBACK (socket_disconnected), conn);
-
 		if (!priv->ssl || !priv->proxy_uri) {
 			soup_connection_event (conn,
 					       G_SOCKET_CLIENT_COMPLETE,
@@ -820,14 +808,9 @@ soup_connection_disconnect (SoupConnection *conn)
 		soup_connection_set_state (conn, SOUP_CONNECTION_DISCONNECTED);
 
 	if (priv->socket) {
-		/* Set the socket to NULL at the beginning to avoid reentrancy
-		 * issues. soup_socket_disconnect() could trigger a reentrant
-		 * call unref'ing and disconnecting the socket twice.
-		 */
 		SoupSocket *socket = priv->socket;
+
 		priv->socket = NULL;
-		g_signal_handlers_disconnect_by_func (socket,
-						      socket_disconnected, conn);
 		soup_socket_disconnect (socket);
 		g_object_unref (socket);
 	}



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