return result;
}
-static gboolean __uam_manager_is_request_pending(int function)
+static gboolean __uam_manager_is_request_pending(int function, void *data)
{
FUNC_ENTRY;
GSList *l;
if (!info)
continue;
- if (info->function == function)
- return TRUE;
+ if (info->function == function) {
+ switch (function) {
+ case UAM_REQUEST_ADD_DEVICE:
+ {
+ const char *device_id = (const char *)data;
+ uam_device_info_s *dev_info = (uam_device_info_s *)info->data;
+
+ if (!g_strcmp0(device_id,
+ dev_info->device_id))
+ return TRUE;
+ }
+ break;
+ default:
+ return TRUE;
+ };
+ }
}
FUNC_EXIT;
const char *account;
uam_device_info_s dev_info;
- if (__uam_manager_is_request_pending(UAM_REQUEST_ADD_DEVICE)) {
- UAM_ERR("Another request is already in progress");
- result = UAM_ERROR_NOW_IN_PROGRESS;
- break;
- }
-
account = (char *)g_variant_get_data(in_param1);
__uam_manager_copy_params(in_param2,
&dev_info, sizeof(uam_device_info_s));
dev_info.payload.duid, dev_info.payload.device_icon,
dev_info.payload.bt_mac);
+ if (__uam_manager_is_request_pending(UAM_REQUEST_ADD_DEVICE,
+ dev_info.device_id)) {
+ UAM_ERR("Another request is already in progress");
+ result = UAM_ERROR_NOW_IN_PROGRESS;
+ break;
+ }
+
result = _uam_core_add_device(account, &dev_info);
if (UAM_ERROR_NONE == result) {
__uam_manager_save_request_context(