From c100086bde923cc2445ea449f6e0df262ce62c66 Mon Sep 17 00:00:00 2001 From: Abhinav Kudnar Date: Tue, 27 Feb 2024 17:17:00 +0530 Subject: [PATCH] fix(nimble): Added the check to prevent address resolution in case of identity addr for esp32 --- nimble/host/src/ble_gap.c | 2 +- nimble/host/src/ble_hs_hci_evt.c | 3 +++ nimble/host/src/ble_hs_resolv_priv.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nimble/host/src/ble_gap.c b/nimble/host/src/ble_gap.c index 01773bab0..82243da14 100644 --- a/nimble/host/src/ble_gap.c +++ b/nimble/host/src/ble_gap.c @@ -5899,7 +5899,7 @@ ble_gap_connect(uint8_t own_addr_type, const ble_addr_t *peer_addr, struct ble_hs_resolv_entry *rl = NULL; rl = ble_hs_resolv_list_find(bhc_peer_addr.val); - if (rl != NULL) { + if (rl != NULL && rl->rl_isrpa) { memcpy(bhc_peer_addr.val, rl->rl_peer_rpa, BLE_DEV_ADDR_LEN); bhc_peer_addr.type = rl->rl_addr_type; } diff --git a/nimble/host/src/ble_hs_hci_evt.c b/nimble/host/src/ble_hs_hci_evt.c index f14a4f1d7..cdb2df969 100644 --- a/nimble/host/src/ble_hs_hci_evt.c +++ b/nimble/host/src/ble_hs_hci_evt.c @@ -671,6 +671,9 @@ ble_hs_hci_evt_le_adv_rpt(uint8_t subevent, const void *data, unsigned int len) rl = ble_hs_resolv_rpa_addr(desc.addr.val, desc.addr.type); if (rl != NULL) { + if(desc.addr.type == 1) { + rl->rl_isrpa = 1; + } memcpy(desc.addr.val, rl->rl_identity_addr, BLE_DEV_ADDR_LEN); desc.addr.type = rl->rl_addr_type; } diff --git a/nimble/host/src/ble_hs_resolv_priv.h b/nimble/host/src/ble_hs_resolv_priv.h index 5a74b9420..382ac82b8 100644 --- a/nimble/host/src/ble_hs_resolv_priv.h +++ b/nimble/host/src/ble_hs_resolv_priv.h @@ -35,6 +35,7 @@ struct ble_hs_resolv_entry { uint8_t rl_pseudo_id[BLE_DEV_ADDR_LEN]; uint8_t rl_local_rpa[BLE_DEV_ADDR_LEN]; uint8_t rl_peer_rpa[BLE_DEV_ADDR_LEN]; + uint8_t rl_isrpa; }; #if MYNEWT_VAL(BLE_STORE_CONFIG_PERSIST)