Diff between 6d14672eb38029d0ea79b7382837d71ba56dbcee and 2cd4c008b08a0bb8f504b4c0d49a65c02840cd9e

Changed Files

File Additions Deletions Status
gdbus/client.c +8 -5 modified

Full Patch

diff --git a/gdbus/client.c b/gdbus/client.c
index eb68a0f..238b348 100644
--- a/gdbus/client.c
+++ b/gdbus/client.c
@@ -1107,6 +1107,9 @@ static void get_managed_objects(GDBusClient *client)
 {
 	DBusMessage *msg;
 
+	if (!client->connected)
+		return;
+
 	if (!client->proxy_added && !client->proxy_removed) {
 		refresh_properties(client);
 		return;
@@ -1142,13 +1145,13 @@ static void service_connect(DBusConnection *conn, void *user_data)
 
 	g_dbus_client_ref(client);
 
+	client->connected = TRUE;
+
 	if (client->connect_func)
 		client->connect_func(conn, client->connect_data);
 
 	get_managed_objects(client);
 
-	client->connected = TRUE;
-
 	g_dbus_client_unref(client);
 }
 
@@ -1156,13 +1159,13 @@ static void service_disconnect(DBusConnection *conn, void *user_data)
 {
 	GDBusClient *client = user_data;
 
+	client->connected = FALSE;
+
 	g_list_free_full(client->proxy_list, proxy_free);
 	client->proxy_list = NULL;
 
-	if (client->disconn_func) {
+	if (client->disconn_func)
 		client->disconn_func(conn, client->disconn_data);
-		client->connected = FALSE;
-	}
 }
 
 static DBusHandlerResult message_filter(DBusConnection *connection,