From f4807c64e0fdfca2c546c13753257437a879c203 Mon Sep 17 00:00:00 2001 From: Mikel Astiz Date: Mon, 23 Apr 2012 10:34:35 +0200 Subject: [PATCH] core: Fix adapter mode inconsistency The mode change in btd_adapter_start() doesn't check if the adapter is discoverable, creating an inconsistency between the plugin and the core. Using the management interface it is easy to reproduce the problem, by starting BlueZ while the adapter is discoverable. After this, the state cannot be changed. --- src/adapter.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/adapter.c b/src/adapter.c index 12b6aeb2f..a4180b14b 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -2183,9 +2183,13 @@ void btd_adapter_start(struct btd_adapter *adapter) adapter->up = TRUE; adapter->discov_timeout = get_discoverable_timeout(address); adapter->pairable_timeout = get_pairable_timeout(address); - adapter->mode = MODE_CONNECTABLE; adapter->off_timer = 0; + if (adapter->scan_mode & SCAN_INQUIRY) + adapter->mode = MODE_DISCOVERABLE; + else + adapter->mode = MODE_CONNECTABLE; + powered = TRUE; emit_property_changed(connection, adapter->path, ADAPTER_INTERFACE, "Powered", -- 2.47.3