diff --git a/src/device.c b/src/device.c
index b004f43..83a794e 100644
--- a/src/device.c
+++ b/src/device.c
if (device->blocked)
return 0;
+ if (device->disconn_timer > 0)
+ g_source_remove(device->disconn_timer);
+
disconnect_all(device);
while (device->services != NULL) {
g_slist_free(device->pending);
device->pending = NULL;
- if (btd_device_is_connected(device))
+ if (btd_device_is_connected(device)) {
+ g_source_remove(device->disconn_timer);
disconnect_all(device);
+ }
if (device->store_id > 0) {
g_source_remove(device->store_id);