diff --git a/nimble/host/src/ble_gap.c b/nimble/host/src/ble_gap.c index 65a2f6eab..71b094ba7 100644 --- a/nimble/host/src/ble_gap.c +++ b/nimble/host/src/ble_gap.c @@ -2750,11 +2750,11 @@ ble_gap_rx_adv_report_sanity_check(const uint8_t *adv_data, uint8_t adv_data_len return -1; } - if (ble_gap_master.disc.observer || is_scan_rsp || skip_flags_check) { - /* Observer role is enabled; All adv reports regardless of - * Flags AD Type need to be discovered. - * Also, ignore AD type checks for scan response data and for - * incomplete extended advertising reports. + if ((ble_gap_master.disc.observer && !ble_gap_master.disc.limited) || + is_scan_rsp || skip_flags_check) { + /* Observation procedure accepts all adv reports regardless of + * Flags AD Type. Limited discovery is stricter and must still + * enforce BLE_HS_ADV_F_DISC_LTD. */ return 0; }