From 28ddec8d6b829e002fa268c07b71e4c564ba9e16 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 11 Mar 2021 07:36:07 -0800 Subject: [PATCH] avdtp: Fix removing all remote SEPs when loading from cache If avdtp_discover is called after cache has been loaded it end up removing all remote SEPs as they have not been discovered yet. Fixes: https://github.com/bluez/bluez/issues/102 --- profiles/audio/avdtp.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/profiles/audio/avdtp.c b/profiles/audio/avdtp.c index 088ca58b3..1d5871c62 100644 --- a/profiles/audio/avdtp.c +++ b/profiles/audio/avdtp.c @@ -3381,10 +3381,18 @@ int avdtp_discover(struct avdtp *session, avdtp_discover_cb_t cb, session->discover = g_new0(struct discover_callback, 1); if (session->seps) { - session->discover->cb = cb; - session->discover->user_data = user_data; - session->discover->id = g_idle_add(process_discover, session); - return 0; + struct avdtp_remote_sep *sep = session->seps->data; + + /* Check that SEP have been discovered as it may be loaded from + * cache. + */ + if (sep->discovered) { + session->discover->cb = cb; + session->discover->user_data = user_data; + session->discover->id = g_idle_add(process_discover, + session); + return 0; + } } err = send_request(session, FALSE, NULL, AVDTP_DISCOVER, NULL, 0);