}
}
-static struct btd_profile *btd_profile_find_uuid(const char *uuid)
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+
+static struct btd_profile *btd_profile_find_uuid(const char *uuid,
+ const char *path)
{
GSList *l, *next;
struct ext_profile *ext = l->data;
struct btd_profile *p = &ext->p;
+ /* Compare the paths in order to register both client and server
+ * with same UUID at a time */
+ if (!g_strcmp0(p->local_uuid, uuid) && !strncmp(ext->path, path, 18))
+ return p;
+ next = g_slist_next(l);
+ }
+
+ return NULL;
+}
+
+#else
+
+static struct btd_profile *btd_profile_find_uuid(const char *uuid)
+{
+ GSList *l, *next;
+
+ for (l = profiles; l != NULL; l = next) {
+ struct btd_profile *p = l->data;
+
+ if (!g_strcmp0(p->local_uuid, uuid))
+ return p;
+ next = g_slist_next(l);
+ }
+ for (l = ext_profiles; l != NULL; l = next) {
+ struct ext_profile *ext = l->data;
+ struct btd_profile *p = &ext->p;
+
if (!g_strcmp0(p->local_uuid, uuid))
return p;
next = g_slist_next(l);
return NULL;
}
+#endif
+
int btd_profile_register(struct btd_profile *profile)
{
profiles = g_slist_append(profiles, profile);
dbus_message_iter_get_basic(&args, &uuid);
dbus_message_iter_next(&args);
+#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
+ if (btd_profile_find_uuid(uuid, path)) {
+#else
if (btd_profile_find_uuid(uuid)) {
+#endif
warn("%s tried to register %s which is already registered",
sender, uuid);
return btd_error_not_permitted(msg, "UUID already registered");