wfd_manager_s *manager = wfd_get_manager();
GVariant *return_parameters = NULL;
const char *vsie = NULL;
+ char *already_vsie = NULL;
int frame_id = 0;
int ret;
if (manager->state < WIFI_DIRECT_STATE_ACTIVATED)
WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_NOT_PERMITTED, dest);
+ wfd_oem_get_vsie(manager->oem_ops, frame_id, &already_vsie);
+
+ /* Do not add vsie if already present */
+ if (already_vsie && vsie && strstr(already_vsie, vsie)) {
+ ret = WIFI_DIRECT_ERROR_NONE;
+ return_parameters = g_variant_new("(i)", ret);
+ wfd_manager_dbus_reply_params((GDBusMethodInvocation *)dest,
+ return_parameters);
+ return;
+ }
+
if (wfd_oem_add_vsie(manager->oem_ops, frame_id, vsie) < 0)
WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_OPERATION_FAILED, dest);