Commit 955638ec authored by Marcel Holtmann's avatar Marcel Holtmann Committed by Johan Hedberg

Bluetooth: Fix handling of discoverable setting with timeout

The current handling of the discoverable timeout was missing the proper
handling of the timeout when the mode was already set. Now the command
can be used to expire or retrigger the timeout.
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 24c54a90
...@@ -900,6 +900,17 @@ static int set_discoverable(struct sock *sk, u16 index, void *data, u16 len) ...@@ -900,6 +900,17 @@ static int set_discoverable(struct sock *sk, u16 index, void *data, u16 len)
} }
if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) {
if (hdev->discov_timeout > 0) {
cancel_delayed_work(&hdev->discov_off);
hdev->discov_timeout = 0;
}
if (cp->val && timeout > 0) {
hdev->discov_timeout = timeout;
queue_delayed_work(hdev->workqueue, &hdev->discov_off,
msecs_to_jiffies(hdev->discov_timeout * 1000));
}
err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev);
goto failed; goto failed;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment