diff --git a/src/nimble/nimble/host/src/ble_gap.c b/src/nimble/nimble/host/src/ble_gap.c index 778e6fbd6..436b00790 100644 --- a/src/nimble/nimble/host/src/ble_gap.c +++ b/src/nimble/nimble/host/src/ble_gap.c @@ -2853,23 +2853,25 @@ ble_gap_rx_rd_rem_ver_info_complete(const struct ble_hci_ev_rd_rem_ver_info_cmp { #if NIMBLE_BLE_CONNECT struct ble_hs_conn *conn; + int is_master; ble_hs_lock(); - conn = ble_hs_conn_find(le16toh(ev->conn_handle)); - - ble_hs_unlock(); + if (conn == NULL) { + ble_hs_unlock(); + return; + } conn->bhc_rd_rem_ver_params.version = ev->version; conn->bhc_rd_rem_ver_params.manufacturer = ev->manufacturer; conn->bhc_rd_rem_ver_params.subversion = ev->subversion; + is_master = conn->bhc_flags & BLE_HS_CONN_F_MASTER; + ble_hs_unlock(); - if ((conn != NULL) && !(conn->bhc_flags & BLE_HS_CONN_F_MASTER)) { + if (!is_master) { ble_gap_rd_rem_sup_feat_tx(ev->conn_handle); - } else { - if ((conn != NULL) && (ev->status == 0)) { - ble_gap_event_connect_call(ev->conn_handle, ev->status); - } + } else if (ev->status == 0) { + ble_gap_event_connect_call(ev->conn_handle, ev->status); } #endif }