Diff between af49b62cccbb6a780641d9e7fb44e3544a7a0604 and 9e9b9d7e0cf95c291dd171d34a5e281918b7cef5

Changed Files

File Additions Deletions Status
src/adapter.c +15 -0 modified

Full Patch

diff --git a/src/adapter.c b/src/adapter.c
index cc8de48..a347e61 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -678,8 +678,20 @@ static int uuid_cmp(const void *a, const void *b)
 void adapter_service_insert(struct btd_adapter *adapter, void *r)
 {
 	sdp_record_t *rec = r;
+	sdp_list_t *browse_list = NULL;
+	uuid_t browse_uuid;
 	gboolean new_uuid;
 
+	/* skip record without a browse group */
+	if (sdp_get_browse_groups(rec, &browse_list) < 0)
+		return;
+
+	sdp_uuid16_create(&browse_uuid, PUBLIC_BROWSE_GROUP);
+
+	/* skip record without public browse group */
+	if (!sdp_list_find(browse_list, &browse_uuid, sdp_uuid_cmp))
+		goto done;
+
 	if (sdp_list_find(adapter->services, &rec->svclass, uuid_cmp) == NULL)
 		new_uuid = TRUE;
 	else
@@ -696,6 +708,9 @@ void adapter_service_insert(struct btd_adapter *adapter, void *r)
 	if (adapter->initialized)
 		g_dbus_emit_property_changed(btd_get_dbus_connection(),
 				adapter->path, ADAPTER_INTERFACE, "UUIDs");
+
+done:
+	sdp_list_free(browse_list, NULL);
 }
 
 void adapter_service_remove(struct btd_adapter *adapter, void *r)