From d7887a4a0fcd09fe1dc5647f10ec46abc60e948e Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Tue, 10 Dec 2013 10:41:16 +0200 Subject: [PATCH] core: Fix not replying to DisconnectProfile btd_service_disconnect may cause a service to disconnect before returning which cause dev->disconnect to be set after device_profile_disconnected. --- src/device.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/device.c b/src/device.c index d7a00ec1e..953a33855 100644 --- a/src/device.c +++ b/src/device.c @@ -1434,11 +1434,14 @@ static DBusMessage *disconnect_profile(DBusConnection *conn, DBusMessage *msg, if (!service) return btd_error_invalid_args(msg); + dev->disconnect = dbus_message_ref(msg); + err = btd_service_disconnect(service); - if (err == 0) { - dev->disconnect = dbus_message_ref(msg); + if (err == 0) return NULL; - } + + dbus_message_unref(dev->disconnect); + dev->disconnect = NULL; if (err == -ENOTSUP) return btd_error_not_supported(msg); -- 2.47.3