From 454f126a49c311bc885f98c257b14e19c22be400 Mon Sep 17 00:00:00 2001 From: Piotr Narajowski Date: Mon, 17 Aug 2026 13:27:02 +0200 Subject: [PATCH] apps/bttester: fix address lookup in gap_conn_find_by_addr gap_conn_find_by_addr lookup relied on the global peer_id_addr variable to perform address matching. In test cases with multiple concurrent connections, peer_id_addr was overwritten by the most recent event (e.g. connected, identity resolved) causing comparison with address command parameter in BTP cmds to fail. --- apps/bttester/src/btp_gap.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/apps/bttester/src/btp_gap.c b/apps/bttester/src/btp_gap.c index 1fdaed7629..d5034befef 100644 --- a/apps/bttester/src/btp_gap.c +++ b/apps/bttester/src/btp_gap.c @@ -94,29 +94,19 @@ gap_conn_find_by_addr(const ble_addr_t *dev_addr, struct ble_gap_conn_desc *out_desc) { ble_addr_t addr = *dev_addr; + int rc; - if (memcmp(BLE_ADDR_ANY, &peer_id_addr, 6) == 0) { - return ble_gap_conn_find_by_addr(&addr, out_desc); + rc = ble_gap_conn_find_by_addr(&addr, out_desc); + if (rc == 0) { + return 0; } - if (BLE_ADDR_IS_RPA(&addr)) { - if (ble_addr_cmp(&peer_ota_addr, &addr) != 0) { - return -1; - } - - return ble_gap_conn_find_by_addr(&addr, out_desc); - } else { - if (ble_addr_cmp(&peer_id_addr, &addr) != 0) { - return -1; - } - - if (BLE_ADDR_IS_RPA(&peer_ota_addr)) { - /* Change addr type to ID addr */ - addr.type |= 2; - } - - return ble_gap_conn_find_by_addr(&addr, out_desc); + if ((addr.type & BLE_ADDR_PUBLIC_ID) == 0) { + addr.type |= BLE_ADDR_PUBLIC_ID; + rc = ble_gap_conn_find_by_addr(&addr, out_desc); } + + return rc; } static int