aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikel Astiz <mikel.astiz.oss@gmail.com>2012-04-23 10:34:35 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2012-04-23 12:54:10 +0300
commitf4807c64e0fdfca2c546c13753257437a879c203 (patch)
tree88a6fa1c424d1c04c80bdb83d2aa06786f25ca64
parented31ac59ecb6e4e15c350e44637c05d7ef58c019 (diff)
downloadbluez-f4807c64e0fdfca2c546c13753257437a879c203.tar.gz
bluez-f4807c64e0fdfca2c546c13753257437a879c203.tar.xz
bluez-f4807c64e0fdfca2c546c13753257437a879c203.zip
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.
-rw-r--r--src/adapter.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 12b6aeb2..a4180b14 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",