int permission;/**< Permision */
/* For CRED provisioning */
- OCProvisionDev_t *dev1; /**< 1st device for CRED provisiong */
- OCProvisionDev_t *dev2; /**< 2nd device for CRED provisiong */
+ gchar *uuid_dev1; /**< 1st device for CRED provisiong */
+ gchar *uuid_dev2; /**< 2nd device for CRED provisiong */
} d2ds_req_cb_s;
typedef struct _d2ds_subowner {
{
OCStackResult ret = OC_STACK_OK;
- d2ds_check_null_ret("g_client", g_client);
+ d2ds_check_null_ret_error("g_client", g_client, OC_STACK_INVALID_PARAM);
for (int i=0; !g_client->g_doneCB && msec > i; ++i) {
usleep(1000);
if (con->uuid_target_str) {
g_free(con->uuid_target_str);
}
+ if (con->uuid_dev1) {
+ g_free(con->uuid_dev1);
+ }
+ if (con->uuid_dev2) {
+ g_free(con->uuid_dev2);
+ }
/* Set d2ds status 'pending' */
g_atomic_int_set(&service->pending, 0);
static gpointer _disc_mot_env_devs_func(gpointer data)
{
d2ds_req_cb_s *con = (d2ds_req_cb_s *)data;
- d2ds_check_null_ret("con", con);
+ d2ds_check_null_ret_error("con", con, NULL);
/* delete un/owned device lists before updating them */
_remove_mot_client();
OCStackResult ret = OC_STACK_OK;
d2ds_req_cb_s *con = (d2ds_req_cb_s *)data;
- if (!con->dev1 ) {
+ OicUuid_t *uuid = NULL;
+ OCProvisionDev_t *dev1 = NULL;
+ OCProvisionDev_t *dev2 = NULL;
+
+ if (!con->uuid_dev1 ) {
D2DS_LOGE("dev1 is NULL");
- return NULL;
+ goto PVPWS_ERROR;
}
- if (!con->dev2) {
- D2DS_LOGE("dev1 is NULL");
- return NULL;
+ if (!con->uuid_dev2) {
+ D2DS_LOGE("dev2 is NULL");
+ goto PVPWS_ERROR;
}
+ uuid = _convert_uuid(con->uuid_dev1);
+ dev1 = _get_dev_by_uuid(g_client->g_mowned_list, uuid);
+ if (!dev1) {
+ D2DS_LOGE("We can't find in MOWNED dev list");
+ goto PVPWS_ERROR;
+ }
+ g_free(uuid);
+
+ uuid = _convert_uuid(con->uuid_dev2);
+ dev2 = _get_dev_by_uuid(g_client->g_mowned_list, uuid);
+ if (!dev2) {
+ D2DS_LOGE("We can't find in MOWNED dev list");
+ goto PVPWS_ERROR;
+ }
+ g_free(uuid);
+
+ /* To do ACL provisioning only one */
+ dev1->next = NULL;
+
+ /* To do ACL provisioning only one */
+ dev2->next = NULL;
+
g_client->g_doneCB = false;
D2DS_LOGI("Provisioning Selected Pairwise Devices..");
ret = OCProvisionCredentials((void*) g_client,
SYMMETRIC_PAIR_WISE_KEY, OWNER_PSK_LENGTH_128,
- con->dev1, con->dev2, _provision_cred_cb);
+ dev1, dev2, _provision_cred_cb);
if (OC_STACK_OK != ret) {
D2DS_LOGD( "OCProvisionPairwiseDevices API error: %d (%s)", ret, _error_to_string(ret));
goto PVPWS_ERROR;
/* Notify ACL result */
net_d2ds_emit_prov_cred_done(d2ds_dbus_get_object(), (int)ret);
+ if (uuid)
+ g_free(uuid);
_request_cleanup(con);
g_thread_exit(GINT_TO_POINTER (1));
static int _provisioning_cred(d2ds_service *service,
gchar *uuid_dev1, gchar *uuid_dev2)
{
-
- OicUuid_t *uuid = NULL;
- OCProvisionDev_t *dev1 = NULL;
- OCProvisionDev_t *dev2 = NULL;
-
d2ds_req_cb_s *con = NULL;
con = g_malloc0(sizeof(d2ds_req_cb_s));
if (!con) {
return D2DS_ERROR_INVALID_PARAMETER;
}
- uuid = _convert_uuid(uuid_dev1);
- dev1 = _get_dev_by_uuid(g_client->g_mowned_list, uuid);
- if (!dev1) {
- D2DS_LOGE("We can't find in MOWNED dev list");
- g_free(uuid);
- _request_cleanup(con);
- return D2DS_ERROR_NO_DATA;
- }
- g_free(uuid);
-
- uuid = _convert_uuid(uuid_dev2);
- dev2 = _get_dev_by_uuid(g_client->g_mowned_list, uuid);
- if (!dev2) {
- D2DS_LOGE("We can't find in MOWNED dev list");
- g_free(uuid);
- _request_cleanup(con);
- return D2DS_ERROR_NO_DATA;
- }
- g_free(uuid);
-
- /* Copy subject device and related information */
- con->dev1 = PMCloneOCProvisionDev(dev1);
- /* To do ACL provisioning only one */
- con->dev1->next = NULL;
-
- con->dev2 = PMCloneOCProvisionDev(dev2);
- /* To do ACL provisioning only one */
- con->dev2->next = NULL;
+ con->uuid_dev1 = g_strdup(uuid_dev1);
+ con->uuid_dev2 = g_strdup(uuid_dev2);
con->thread = g_thread_try_new("prov_cred", _cred_provisioning_func, con, NULL);
if (!con->thread) {