extend lock's range in live_messages_notify()

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>
This commit is contained in:
Adrian Szyndela 2015-05-05 12:27:15 +01:00 committed by Simon McVittie
parent 08e2b81062
commit bebe9ca993

View file

@ -63,6 +63,7 @@ live_messages_notify (DBusCounter *counter,
{
DBusTransport *transport = user_data;
_dbus_connection_lock (transport->connection);
_dbus_transport_ref (transport);
#if 0
@ -77,12 +78,11 @@ live_messages_notify (DBusCounter *counter,
*/
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);
}
/**