summaryrefslogtreecommitdiff
path: root/src/adapter.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2009-08-01 01:05:55 +0300
committerJohan Hedberg <johan.hedberg@nokia.com>2009-08-01 01:05:55 +0300
commitc1b999fbc96dfa28f119fe099d7c4b556c7523af (patch)
tree880683b24aa8e6c8fa8b966cb2c7eeb3d364ad5e /src/adapter.c
parent45d22bfa24270b782eb0e6c5df003c574314df61 (diff)
downloadbluez-c1b999fbc96dfa28f119fe099d7c4b556c7523af.tar.gz
Use limited discoverable mode only when 0 < discov_timeout <= 60
Diffstat (limited to 'src/adapter.c')
-rw-r--r--src/adapter.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 572cf5b9e..295cddc6c 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -513,7 +513,9 @@ static DBusMessage *set_discoverable(DBusConnection *conn, DBusMessage *msg,
mode = discoverable ? MODE_DISCOVERABLE : MODE_CONNECTABLE;
- if (mode == MODE_DISCOVERABLE && adapter->pairable)
+ if (mode == MODE_DISCOVERABLE && adapter->pairable &&
+ adapter->discov_timeout > 0 &&
+ adapter->discov_timeout <= 60)
mode = MODE_LIMITED;
if (mode == adapter->mode)
@@ -554,7 +556,9 @@ static DBusMessage *set_pairable(DBusConnection *conn, DBusMessage *msg,
if (!(adapter->scan_mode & SCAN_INQUIRY))
goto done;
- mode = pairable ? MODE_LIMITED : MODE_DISCOVERABLE;
+ mode = (pairable && adapter->discov_timeout > 0 &&
+ adapter->discov_timeout <= 60) ?
+ MODE_LIMITED : MODE_DISCOVERABLE;
err = set_mode(adapter, mode);
if (err < 0 && msg)
@@ -2017,8 +2021,7 @@ static int adapter_up(struct btd_adapter *adapter)
} else if (!g_str_equal(mode, "connectable") &&
adapter->discov_timeout == 0) {
/* Set discoverable only if timeout is 0 */
- adapter->mode = adapter->pairable ?
- MODE_LIMITED : MODE_DISCOVERABLE;
+ adapter->mode = MODE_DISCOVERABLE;
scan_mode = SCAN_PAGE | SCAN_INQUIRY;
}
@@ -2737,7 +2740,8 @@ void adapter_mode_changed(struct btd_adapter *adapter, uint8_t scan_mode)
if (adapter->svc_cache)
real_class[2] = adapter->svc_cache;
- if (discoverable && adapter->pairable)
+ if (discoverable && adapter->pairable && adapter->discov_timeout > 0 &&
+ adapter->discov_timeout <= 60)
adapter_ops->set_limited_discoverable(adapter->dev_id,
real_class, TRUE);
else if (!discoverable)