diff mbox series

[BlueZ] media: Fix registering PAC endpoints if ISO socket are not supported

Message ID 20220830215444.1141653-1-luiz.dentz@gmail.com
State New
Headers show
Series [BlueZ] media: Fix registering PAC endpoints if ISO socket are not supported | expand

Commit Message

Luiz Augusto von Dentz Aug. 30, 2022, 9:54 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

If adapter don't support ISO sockets the PAC UUIDs shall not be allowed
to be registered as they depend on ISO sockets to work properly.
---
 profiles/audio/media.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

patchwork-bot+bluetooth@kernel.org Aug. 31, 2022, 11:10 p.m. UTC | #1
Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Tue, 30 Aug 2022 14:54:44 -0700 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> If adapter don't support ISO sockets the PAC UUIDs shall not be allowed
> to be registered as they depend on ISO sockets to work properly.
> ---
>  profiles/audio/media.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)

Here is the summary with links:
  - [BlueZ] media: Fix registering PAC endpoints if ISO socket are not supported
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=a84aa0e6e5e7

You are awesome, thank you!
diff mbox series

Patch

diff --git a/profiles/audio/media.c b/profiles/audio/media.c
index 85278a6d9be4..a7fa85d60310 100644
--- a/profiles/audio/media.c
+++ b/profiles/audio/media.c
@@ -1254,20 +1254,23 @@  static bool endpoint_properties_get(const char *uuid,
 	return true;
 }
 
-static bool endpoint_supported(void)
+static bool endpoint_supported(struct btd_adapter *adapter)
 {
 	return true;
 }
 
-static bool experimental_endpoint_supported(void)
+static bool experimental_endpoint_supported(struct btd_adapter *adapter)
 {
+	if (!btd_adapter_has_exp_feature(adapter, EXP_FEAT_ISO_SOCKET))
+		return false;
+
 	return g_dbus_get_flags() & G_DBUS_FLAG_ENABLE_EXPERIMENTAL;
 }
 
 static struct media_endpoint_init {
 	const char *uuid;
 	bool (*func)(struct media_endpoint *endpoint, int *err);
-	bool (*supported)(void);
+	bool (*supported)(struct btd_adapter *adapter);
 } init_table[] = {
 	{ A2DP_SOURCE_UUID, endpoint_init_a2dp_source, endpoint_supported },
 	{ A2DP_SINK_UUID, endpoint_init_a2dp_sink, endpoint_supported },
@@ -1315,6 +1318,9 @@  media_endpoint_create(struct media_adapter *adapter,
 	for (i = 0; i < ARRAY_SIZE(init_table); i++) {
 		init = &init_table[i];
 
+		if (!init->supported(adapter->btd_adapter))
+			continue;
+
 		if (!strcasecmp(init->uuid, uuid)) {
 			succeeded = init->func(endpoint, err);
 			break;
@@ -2971,6 +2977,7 @@  static const GDBusMethodTable media_methods[] = {
 static gboolean supported_uuids(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *data)
 {
+	struct media_adapter *adapter = data;
 	DBusMessageIter entry;
 	size_t i;
 
@@ -2980,7 +2987,7 @@  static gboolean supported_uuids(const GDBusPropertyTable *property,
 	for (i = 0; i < ARRAY_SIZE(init_table); i++) {
 		struct media_endpoint_init *init = &init_table[i];
 
-		if (init->supported())
+		if (init->supported(adapter->btd_adapter))
 			dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING,
 							&init->uuid);
 	}