diff --git a/src/device.c b/src/device.c
index 1db96d9..e5191ca 100644
--- a/src/device.c
+++ b/src/device.c
bool btd_device_is_connected(struct btd_device *dev)
{
- return dev->bredr_state.connected || dev->le_state.connected;
+ if (dev->bredr_state.connected || dev->le_state.connected)
+ return true;
+
+ return find_service_with_state(dev->services,
+ BTD_SERVICE_STATE_CONNECTED);
}
static void clear_temporary_timer(struct btd_device *dev)
{
struct btd_device *dev = user_data;
+ if (btd_device_is_connected(dev)) {
+ char addr[18];
+ ba2str(&dev->bdaddr, addr);
+ DBG("Device %s is marked as connected", dev->path);
+ return TRUE;
+ }
+
/* If there are services connecting restart the timer to give more time
* for the service to either complete the connection or disconnect.
*/