diff options
| author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2013-12-10 10:41:16 +0200 |
|---|---|---|
| committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-12-10 11:30:14 +0200 |
| commit | d7887a4a0fcd09fe1dc5647f10ec46abc60e948e (patch) | |
| tree | bde98260a6a8af616d20aba42264798ea2c139b2 /src | |
| parent | e6b5ba499a0729fbd9666ab712e2e7fe84dbd8fc (diff) | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/device.c | 9 |
1 files 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); |
