Hi Alain, >>> The gatt discovery proceedure simplification to discover all >>> characteristics at once has exposed a device side issue where some >>> device implementation reports orphaned characteristics. While this >>> technically shouldn't be allowed, some instances of this were observed >>> (namely on some Android phones). >>> >>> The fix is to simply skip over orphaned characteristics and continue >>> with everything else that is valid. >>> >>> This has been tested as part of the Android CTS tests against an >>> affected platform and was confirmed to have worked around the issue. >>> --- >>> >>> src/shared/gatt-client.c | 5 ++++- >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/src/shared/gatt-client.c b/src/shared/gatt-client.c >>> index 963ad619f..d604c77a3 100644 >>> --- a/src/shared/gatt-client.c >>> +++ b/src/shared/gatt-client.c >>> @@ -632,7 +632,10 @@ static bool discover_descs(struct discovery_op *op, bool *discovering) >>> util_debug(client->debug_callback, client->debug_data, >>> "Failed to insert characteristic at 0x%04x", >>> chrc_data->value_handle); >>> - goto failed; >>> + >>> + /* Skip over invalid characteristic */ >>> + free(chrc_data); >>> + continue; >>> } >> >> should we add a warning here? > Is there a good way other than the util_debug mechanism to write a warning? you could just use btd_warn() here. If this gets too noisy, we either remove it later or we introduce a btd_warn_ratelimited() or btd_warn_once(). Regards Marcel