added error handling routine.
authorsaerome.kim <saerome.kim@samsung.com>
Wed, 25 Apr 2018 12:27:40 +0000 (21:27 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Mon, 2 Jul 2018 10:38:50 +0000 (19:38 +0900)
- added printing error message
- added recovery logic when mot-agent dies

Signed-off-by: saerome.kim <saerome.kim@samsung.com>
capi/src/mdg.c
src/mdg-manager/src/mdgd_mot_agent.c

index ee51bee..65294a5 100644 (file)
@@ -274,6 +274,11 @@ EXPORT_API int mdg_device_find(mdg_h handle, int timeout,
 
        /* get groups from daemon using gdbus */
        group_call_device_find_sync(_handle->group_proxy, timeout, &ret, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        return ret;
 }
@@ -297,6 +302,11 @@ EXPORT_API int mdg_device_find_mowned_device(mdg_h handle,
 
        /* get groups from daemon using gdbus */
        group_call_find_mowned_devices_sync(_handle->group_proxy, timeout, &ret, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        return ret;
 }
@@ -341,6 +351,11 @@ EXPORT_API int mdg_device_send_data(mdg_h handle,
 
        group_call_send_data_sync(_handle->group_proxy, dev->device_id, dev->ip,
                                                          dev->sec_port, params, &ret, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        g_free(buf);
        buf = NULL;
@@ -365,6 +380,11 @@ EXPORT_API int mdg_device_get_found_devices(mdg_h handle,
 
        /* get groups from daemon using gdbus */
        group_call_get_remote_device_sync(_handle->group_proxy, &num, &va, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
        /* *count = g_variant_n_children(va); */
        *count = num;
 
@@ -444,6 +464,11 @@ EXPORT_API int mdg_device_get_found_mowned_devices(
 
        /* get groups from daemon using gdbus */
        group_call_get_mowned_device_sync(_handle->group_proxy, &num, &va, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
        /* *count = g_variant_n_children(va); */
        *count = num;
 
@@ -520,6 +545,11 @@ EXPORT_API int mdg_device_info_get_my_uuid(mdg_h handle, char **uuid)
        mdg_check_null_ret_error("handle", handle, MDG_ERROR_INVALID_PARAMETER);
 
        group_call_get_my_uuid_sync(_handle->group_proxy, uuid, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        return ret;
 }
@@ -550,6 +580,11 @@ EXPORT_API int mdg_device_info_get_my_device(mdg_h handle,
        mdg_check_null_ret_error("handle", handle, MDG_ERROR_INVALID_PARAMETER);
 
        group_call_get_my_mowned_device_sync(_handle->group_proxy, &va, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        g_variant_get(va, "a{sv}", &iter);
        /* LCOV_EXCL_START */
@@ -1033,6 +1068,7 @@ EXPORT_API int mdg_request_invite_device(mdg_h handle,
        mdg_request_result_cb cb, void *user_data)
 {
        int ret = MDG_ERROR_NONE;
+       GError *error = NULL;
 
        NOTUSED(cb);
        NOTUSED(user_data);
@@ -1053,7 +1089,12 @@ EXPORT_API int mdg_request_invite_device(mdg_h handle,
        _DBG("%s", dev->device_id);
 
        group_call_request_invite(_handle->group_proxy, grp->device_id, grp->group_name,
-               dev->device_id, PIN, NULL, NULL, NULL);
+               dev->device_id, PIN, NULL, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        return ret;
 }
@@ -1063,6 +1104,7 @@ EXPORT_API int mdg_request_eject_device(mdg_h handle,
        void *user_data)
 {
        int ret = MDG_ERROR_NONE;
+       GError *error = NULL;
 
        NOTUSED(cb);
        NOTUSED(user_data);
@@ -1083,7 +1125,12 @@ EXPORT_API int mdg_request_eject_device(mdg_h handle,
        _DBG("%s", dev->device_id);
 
        group_call_request_eject(_handle->group_proxy, grp->device_id, grp->group_name,
-               dev->device_id, NULL, NULL, NULL);
+               dev->device_id, NULL, NULL, &error);
+       if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
+       }
 
        return ret;
 }
@@ -1135,6 +1182,10 @@ EXPORT_API int mdg_device_monitor_start(mdg_h handle,
        if (ret != MDG_ERROR_NONE) {
                _ERR("Failed to start monitor");
                return ret;
+       } else if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
        }
 
        _handle->monitor_result_cb.cb = cb;
@@ -1164,6 +1215,10 @@ EXPORT_API int mdg_device_monitor_stop(mdg_h handle)
        if (ret != MDG_ERROR_NONE) {
                _ERR("Failed to stop monitor");
                return ret;
+       } else if (error) {
+               _ERR("Failed DBus call [%s]", error->message);
+               g_error_free(error);
+               ret = MDG_ERROR_IO_ERROR;
        }
 
        _handle->monitor_result_cb.cb = NULL;
index 347bc0d..f9978c9 100644 (file)
@@ -69,7 +69,9 @@ int agent_get_ownerid(char* deviceid)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -94,7 +96,9 @@ int agent_find_mot_enable_devices(int timeout)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -119,7 +123,9 @@ int agent_find_mowned_devices(int timeout)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -144,7 +150,9 @@ int agent_mot(char* uuid_str, char *pin)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -174,7 +182,9 @@ int agent_resources_pairwise(char* target1, char *subject1, char *uri1,
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -200,7 +210,9 @@ int agent_unlink_resources(char* uuid_str1, char *uuid_str2)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 #ifdef INVITE_EJECT_DEVICE_BY_MULTI_RUN
        if (result == MDGD_ERROR_NONE) {
@@ -230,7 +242,9 @@ int agent_remove_subowner(char* uuid_str)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -255,7 +269,9 @@ int agent_remove_subowned(char* uuid_str)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -285,7 +301,9 @@ int agent_pair(const char *pin, char* target1, const char *subject1, char *uri1,
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -311,7 +329,9 @@ int agent_unpair(char* uuid_str1, const char *uuid_str2)
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -337,7 +357,9 @@ int agent_enable()
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
 
        return result;
@@ -363,7 +385,9 @@ int agent_disable()
        } else if (error) {
                LOGE("Failed DBus call [%s]", error->message);
                g_error_free(error);
-               return MDGD_ERROR_IO_ERROR;
+               /* Restart mot-agent */
+               agent_enable();
+               result = MDGD_ERROR_IO_ERROR;
        }
        return result;
 }
@@ -446,11 +470,7 @@ static gboolean __perform_agent_pairwise(gpointer data)
        mdgd_group_invite_info_t *group_invite_info;
 
        group_invite_info = mdgd_group_get_invite_info();
-
-       if (!group_invite_info) {
-               LOG_ERR("group_invite_info is null");
-               return FALSE;
-       }
+       mdgd_check_null_ret_error("group_invite_info", group_invite_info, FALSE);
 
        ret = agent_pairwise(group_invite_info->uuid_dev1, group_invite_info->uuid_dev2,
                                                 group_invite_info->uri_1, group_invite_info->rt_1,
@@ -505,10 +525,7 @@ static void _agent_signal_handler(GDBusConnection *connection,
        int result = MDGD_ERROR_NONE;
        struct agent_s *h = userdata;
 
-       if (NULL == h) {
-               LOG_ERR("user_data is null");
-               return;
-       }
+       mdgd_check_null_ret("userdata", userdata);
 
        LOG_DEBUG("signal received = %s", signal_name);
 
@@ -516,22 +533,24 @@ static void _agent_signal_handler(GDBusConnection *connection,
                g_variant_get(parameters, "(i)", &result);
                LOG_DEBUG("Result : %d", result);
        } else if (0 == g_strcmp0(signal_name, "disc_mot_enb_devs_done") ||
-               0 == g_strcmp0(signal_name, "disc_mowned_devs_done")) {
+                               0 == g_strcmp0(signal_name, "disc_mowned_devs_done")) {
+
                mdgd_context_t *mdgd_ctx = mdgd_context_get_context();
-               mdgd_check_null_ret("mdgd_ctx", mdgd_ctx);
 
-               if (NULL == parameters) {
-                       LOG_ERR("No MOT enabled devices found");
-                       return;
-               }
+               mdgd_check_null_ret("mdgd_ctx", mdgd_ctx);
+               mdgd_check_null_ret("parameters", parameters);
 
                mdgd_command_t *cmd = g_new0(mdgd_command_t, 1);
+               mdgd_check_null_ret("cmd", cmd);
+
                cmd->uuid = g_strdup(mdgd_ctx->device_uuid);
                cmd->user_data = (void *)g_variant_ref(parameters);
                cmd->arg1 = g_strdup(signal_name);
 
+               /* Start peer-discovery */
                mdgd_iot_discovery_resource(MDGD_RESOURCE_TYPE_DEVICE, 2, cmd);
                LOG_DEBUG("Peer description discovery Start");
+
        } else if (0 == g_strcmp0(signal_name, "acl_done")) {
                g_variant_get(parameters, "(i)", &result);
                LOG_DEBUG("Result : %d", result);