From e3924049506cf0a6583dc5b1eef99c3918fd0b59 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 14 Mar 2014 12:42:14 +0200 Subject: [PATCH] emulator/btdev: Fix checking for non-connectable advertising --- emulator/btdev.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/emulator/btdev.c b/emulator/btdev.c index 63d10e14e..c127c0b55 100644 --- a/emulator/btdev.c +++ b/emulator/btdev.c @@ -905,11 +905,19 @@ static bool adv_match(struct btdev *scan, struct btdev *adv) return !memcmp(scan_addr(scan), adv->le_adv_direct_addr, 6); } +static bool adv_connectable(struct btdev *btdev) +{ + if (!btdev->le_adv_enable) + return false; + + return btdev->le_adv_type != 0x03; +} + static void le_conn_request(struct btdev *btdev, const uint8_t *bdaddr) { struct btdev *remote = find_btdev_by_bdaddr(bdaddr); - if (remote && remote->le_adv_enable && adv_match(btdev, remote)) + if (remote && adv_connectable(remote) && adv_match(btdev, remote)) le_conn_complete(btdev, bdaddr, 0); else le_conn_complete(btdev, bdaddr, -- 2.47.3