The other code paths that ref or unref a transport are protected by
the DBusConnection's lock. This function already used that lock,
but for a narrower scope than the refcount manipulation.
live_messages_notify() could be triggered by unreffing messages
that originated from the same connection in a different thread.
[smcv: added commit message]
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=90312
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
{
DBusTransport *transport = user_data;
+ _dbus_connection_lock (transport->connection);
_dbus_transport_ref (transport);
#if 0
*/
if (transport->vtable->live_messages_changed)
{
- _dbus_connection_lock (transport->connection);
(* transport->vtable->live_messages_changed) (transport);
- _dbus_connection_unlock (transport->connection);
}
_dbus_transport_unref (transport);
+ _dbus_connection_unlock (transport->connection);
}
/**