diff --git a/src/device.c b/src/device.c
index 753e03a..54a8446 100644
--- a/src/device.c
+++ b/src/device.c
gboolean blocked;
gboolean bonded;
gboolean auto_connect;
+ gboolean disable_auto_connect;
gboolean general_connect;
bool legacy;
if (!device->connected)
return btd_error_not_connected(msg);
+ /*
+ * Disable connections through passive scanning until
+ * Device1.Connect is called
+ */
+ if (device->auto_connect)
+ device->disable_auto_connect = TRUE;
+
device_request_disconnect(device, msg);
return NULL;
device_set_temporary(dev, FALSE);
+ dev->disable_auto_connect = FALSE;
+
err = device_connect_le(dev);
if (err < 0)
return btd_error_failed(msg, strerror(-err));
bool device_get_auto_connect(struct btd_device *device)
{
+ if (device->disable_auto_connect)
+ return false;
+
return device->auto_connect;
}