From eb1e11babd60dc618753aaceec14821526c96a14 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Sun, 1 Oct 2006 16:11:24 +0000 Subject: 2006-10-01 Havoc Pennington * dbus/dbus-bus.c (internal_bus_get): only weak ref the connection; this means _dbus_bus_notify_shared_connection_disconnected_unlocked can be called safely in any context (_dbus_bus_notify_shared_connection_disconnected_unlocked): don't unref * dbus/dbus-connection.c (_dbus_connection_get_dispatch_status_unlocked): move _dbus_bus_notify_shared_connection_disconnected_unlocked here when queuing Disconnected instead of when the Disconnected message arrives, so dbus_bus_get() won't return closed connections. --- dbus/dbus-bus.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'dbus/dbus-bus.c') diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c index bc8c107f..f6918fd5 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -336,7 +336,6 @@ _dbus_bus_notify_shared_connection_disconnected_unlocked (DBusConnection *connec if (bus_connections[i] == connection) { bus_connections[i] = NULL; - _dbus_connection_unref_unlocked (connection); } } @@ -428,9 +427,8 @@ internal_bus_get (DBusBusType type, if (!private) { - /* get a hard ref to the connection */ + /* get a weak ref to the connection */ bus_connections[type] = connection; - dbus_connection_ref (bus_connections[type]); } bd = ensure_bus_data (connection); -- cgit