Add log notification 40/277040/4
authorArkadiusz Nowak <a.nowak3@samsung.com>
Wed, 29 Jun 2022 14:50:08 +0000 (16:50 +0200)
committerArkadiusz Nowak <a.nowak3@samsung.com>
Thu, 30 Jun 2022 13:08:55 +0000 (15:08 +0200)
Change-Id: Ia4e3809385d66e0bb7b00aee40c7bbc66a24d524

libsessiond/src/lib.c
libsessiond/src/lib.h

index 9c9dbcd..8b014fb 100644 (file)
@@ -366,18 +366,20 @@ static void signal_add_user_started_handler(GDBusConnection *connection,
        gpointer client_data) {
 
        if (parameters == NULL || client_data == NULL) {
-               return;
+               LOGE("parameters: (%s), client_data: (%s)", parameters == NULL ? "NULL" : "OK", client_data == NULL ? "NULL" : "OK");
        }
 
        client_callbacks_data_t *client_callbacks_data = (client_callbacks_data_t *)client_data;
 
        if(client_callbacks_data->list == NULL) {
+               LOGE("list is NULL");
                return;
        }
 
        signal_client_data_t *signal_data = find_in_callbacks_data(client_callbacks_data, parameters, g_compare_session_uid_params_wait);
 
-       if(signal_data == NULL || signal_data->client_callback == NULL || signal_data->client_callback_data == NULL ) {
+       if(signal_data == NULL || signal_data->client_callback == NULL ) {
+               LOGE("signal data: (%s),  callback (%s)", signal_data == NULL ? "NULL" : "not NULL", signal_data->client_callback == NULL ? "NULL" : "not NULL");
                return ;
        }
 
@@ -399,24 +401,24 @@ static void signal_remove_user_started_handler(GDBusConnection *connection,
        gpointer client_data)
 {
        if(parameters == NULL || client_data == NULL) {
+               LOGE("arameters: (%s), client data: (%s)", parameters == NULL ? "NULL" : "not NULL", client_data == NULL ? "NULL" : "not NULL");
                return;
        }
 
        client_callbacks_data_t *client_callbacks_data = (client_callbacks_data_t *)client_data;
 
        if(client_callbacks_data->list == NULL) {
+               LOGE("client_callbacks_data->list is NULL");
                return;
        }
 
        signal_client_data_t *signal_data = find_in_callbacks_data(client_callbacks_data, parameters, g_compare_session_uid_params_wait);
 
-       if(signal_data == NULL || signal_data->client_callback == NULL || signal_data->client_callback_data == NULL ) {
+       if(signal_data == NULL || signal_data->client_callback == NULL ) {
+               LOGE("signal data (%s), callback (%s)", signal_data == NULL ? "NULL" : "not NULL",  signal_data->client_callback == NULL ? "NULL" : "not NULL");
                return ;
        }
 
-       if(signal_data->client_callback_data == NULL) {
-               return ;
-       }
 
        subsession_event_info event_info;
 
@@ -436,6 +438,7 @@ static void signal_switch_user_started_handler(GDBusConnection *connection,
        gpointer client_data)
 {
        if (parameters == NULL || client_data == NULL) {
+               LOGE("parameters: (%s) client_data: (%s)", parameters == NULL ? "NULL" : "not NULL", client_data == NULL ? "NULL" : "not NULL");
                return;
        }
 
@@ -443,7 +446,8 @@ static void signal_switch_user_started_handler(GDBusConnection *connection,
 
        signal_client_data_t *signal_data = find_in_callbacks_data(client_callbacks_data, parameters, g_compare_session_uid_params_switch_wait);
 
-       if(signal_data == NULL || signal_data->client_callback == NULL || signal_data->client_callback_data == NULL) {
+       if(signal_data == NULL || signal_data->client_callback == NULL ) {
+               LOGE("signal data: (%s),  callback (%s)", signal_data == NULL ? "NULL" : "not NULL", signal_data->client_callback == NULL ? "NULL" : "not NULL");
                return ;
        }
        subsession_event_info event_info = {0};
@@ -469,18 +473,21 @@ static void  signal_switch_user_completion_handler( GDBusConnection *connection,
        gpointer client_data)
 {
        if (parameters == NULL) {
+               LOGE("parameters is NULL");
                return;
        }
 
        client_callbacks_data_t *client_callbacks_data = client_data;
 
        if(client_data == NULL || client_callbacks_data->list == NULL) {
+               LOGE("client data: (%s),  client callbacks data list (%s)", client_data == NULL ? "NULL" : "not NULL", client_callbacks_data->list == NULL ? "NULL" : "not NULL");
                return;
        }
 
        signal_client_data_t *signal_data = find_in_callbacks_data(client_callbacks_data, parameters, g_compare_session_uid_params_switch_wait);
 
-       if(signal_data == NULL || signal_data->client_callback == NULL || signal_data->client_callback_data == NULL) {
+       if(signal_data == NULL || signal_data->client_callback == NULL) {
+               LOGE("signal data: (%s),  callback (%s)", signal_data == NULL ? "NULL" : "not NULL", signal_data->client_callback == NULL ? "NULL" : "not NULL");
                return ;
        }
 
@@ -532,7 +539,9 @@ static int subscribe_and_call_method(gchar *method, GVariant *params, gchar *sig
        );
 
        if (!retgv || call_sync_error) {
+               LOGE("Dbus error: %s for method: %s" , g_dbus_error_get_remote_error(call_sync_error), method);
                int err = map_dbus_call_error_to_return_value(call_sync_error);
+               log_if_error_(err);
                g_error_free(call_sync_error);
                return err;
        }
@@ -546,7 +555,7 @@ static int method_call_no_signal(gchar *method, GVariant *params) {
        MAKE_SURE_CONNECTION_IS_NOT_NULL();
 
        if(params == NULL) {
-               return  SUBSESSION_ERROR_OUT_OF_MEMORY;
+               return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY);
        }
 
        GVariant *retgv = NULL;
@@ -563,7 +572,9 @@ static int method_call_no_signal(gchar *method, GVariant *params) {
        );
 
        if (!retgv || call_sync_error) {
+               LOGE("Dbus error: %s for method: %s", g_dbus_error_get_remote_error(call_sync_error), method);
                int ret = map_dbus_call_error_to_return_value(call_sync_error);
+               log_if_error_(ret);
                g_error_free(call_sync_error);
                return ret;
        }
@@ -591,7 +602,9 @@ static int method_call_no_signal_return(gchar *method, GVariant *params, const G
        );
 
        if (!retgv || call_sync_error) {
+               LOGE("Dbus error: %s for method: %s", g_dbus_error_get_remote_error(call_sync_error), method);
                int err = map_dbus_call_error_to_return_value(call_sync_error);
+               log_if_error_(err)
                g_error_free(call_sync_error);
                return err;
        }
@@ -615,7 +628,7 @@ static int init_callbacks_list(client_callbacks_data_t *callbacks_data, GVariant
        if(callbacks_data->list == NULL) {
                signal_client_data_t *signal_client_empty_data = make_new_signal_callback_client_data(NULL, NULL, params);
                if(signal_client_empty_data == NULL) {
-                       return SUBSESSION_ERROR_OUT_OF_MEMORY;
+                       return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY)
                }
                callbacks_data->list = g_list_append(callbacks_data->list, (gpointer) signal_client_empty_data);
        }
@@ -633,6 +646,10 @@ static void async_method_reply_handler(GObject *source_obj, GAsyncResult *res, g
                , res
                , &err
        );
+       if(err != NULL) {
+               LOGE("Dbus error: %s map to: %d", g_dbus_error_get_remote_error(err), map_dbus_call_error_to_return_value(err));
+
+       }
 
        /* The reply contains nothing useful, we only use it
         * to receive information about the error, really. */
@@ -687,11 +704,11 @@ EXPORT_API int subsession_add_user(int session_uid, int user, subsession_reply_c
                user_id_is_not_valid(user))
        )
 
-       return call_method_async
+       return_with_log_error_result_(call_method_async
                ( dbus_method_call.AddUser
                , g_variant_new("(ii)", session_uid, user)
                , cb, cb_data
-       );
+       ))
 }
 
 EXPORT_API int subsession_remove_user(int session_uid, int user, subsession_reply_callback cb, void *cb_data) {
@@ -701,11 +718,11 @@ EXPORT_API int subsession_remove_user(int session_uid, int user, subsession_repl
                int_not_valid(user))
        )
 
-       return call_method_async
+       return_with_log_error_result_(call_method_async
                ( dbus_method_call.RemoveUser
                , g_variant_new("(ii)", session_uid, user)
                , cb, cb_data
-       );
+       ))
 }
 
 EXPORT_API int subsession_switch_user(int session_uid, int next_user, subsession_reply_callback cb, void *cb_data) {
@@ -715,11 +732,11 @@ EXPORT_API int subsession_switch_user(int session_uid, int next_user, subsession
                int_not_valid_on_switch(next_user))
        )
 
-       return call_method_async
+       return_with_log_error_result_(call_method_async
                ( dbus_method_call.SwitchUser
                , g_variant_new("(ii)", session_uid, next_user)
                , cb, cb_data
-       );
+       ))
 }
 
 #define cb_data_ cb, cb_data
@@ -788,20 +805,19 @@ int register_event_callback(client_callbacks_data_t *callbacks_data, GDBusSignal
                callbacks_data_are_null(callbacks_data,
                signal_callback_is_null(signal_callback,
                session_uid_is_not_valid(session_uid,
-               callback_is_null(cb,
-               callbacks_data_are_null(cb)))))
+               callback_is_null(cb))))
        )
 
        GVariant * params = g_variant_new("(i)", session_uid);
 
        if(params == NULL) {
-               return SUBSESSION_ERROR_OUT_OF_MEMORY;
+               return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY)
        }
 
        registered_signal_t registered_signal = subsession_register_event_in_list(callbacks_data, default_wait_params_, cb_data_ );
 
        if(registered_signal.error != SUBSESSION_ERROR_NONE) {
-               return  registered_signal.error;
+               return_with_log_error_result_(registered_signal.error);
        }
 
        int method_call_result = subscribe_and_call_method(
@@ -823,7 +839,7 @@ int subscribe_only_callback(client_callbacks_data_t *callbacks_data, GDBusSignal
        GVariant * params = g_variant_new("(i)", session_uid);
 
        if(params == NULL) {
-               return SUBSESSION_ERROR_OUT_OF_MEMORY;
+               return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY);
        }
 
        registered_signal_t registered_signal = subsession_register_event_in_list(callbacks_data, default_wait_params_, cb_data_ );
@@ -878,7 +894,7 @@ int unregister_event_callback(client_callbacks_data_t *callbacks_data, int sessi
        signal_client_data_t *signal_data = take_from_callbacks_data_and_remove_from_list(callbacks_data, gv_session_uid, g_compare_session_uid_params);
 
        if(signal_data == NULL) {
-               return SUBSESSION_ERROR_NOT_AVAILABLE;
+               return_with_log_error_result_(SUBSESSION_ERROR_NOT_AVAILABLE)
        }
 
        free(signal_data);
@@ -914,19 +930,19 @@ EXPORT_API int subsession_unregister_event_callback(int session_uid, subsession_
 int subsession_add_user_wait_done(int session_uid, int user) {
 
        GVariant * params = g_variant_new("(ii)", session_uid, user);
-       return method_call_no_signal(dbus_method_call.AddUserDone, params);
+       return_with_log_error_result_(method_call_no_signal(dbus_method_call.AddUserDone, params));
 }
 
 int subsession_remove_user_wait_done(int session_uid, int user) {
 
        GVariant * params = g_variant_new("(ii)", session_uid, user);
-       return method_call_no_signal(dbus_method_call.RemoveUserDone, params);
+       return_with_log_error_result_(method_call_no_signal(dbus_method_call.RemoveUserDone, params));
 }
 
 int subsession_switch_wait_done(int session_uid, uint64_t switch_id) {
 
        GVariant * params = g_variant_new("(ix)", session_uid, (gint64)switch_id);
-       return method_call_no_signal(dbus_method_call.SwitchUserDone, params);
+       return_with_log_error_result_(method_call_no_signal(dbus_method_call.SwitchUserDone, params));
 }
 
 EXPORT_API int subsession_event_wait_done(subsession_event_info info) {
@@ -1007,7 +1023,7 @@ EXPORT_API int subsession_get_current_user(int session_uid, int *user) {
 
        GVariant * params = g_variant_new("(i)", session_uid);
        if(params == NULL) {
-               return  SUBSESSION_ERROR_OUT_OF_MEMORY;
+               return_with_log_error_result_(SUBSESSION_ERROR_OUT_OF_MEMORY)
        }
 
        GVariant *retgv = NULL;
@@ -1024,7 +1040,9 @@ EXPORT_API int subsession_get_current_user(int session_uid, int *user) {
        );
 
        if (!retgv || call_sync_error) {
+               LOGE("Dbus error: %s for method: %s", g_dbus_error_get_remote_error(call_sync_error), dbus_method_call.GetCurrentUser);
                int ret = map_dbus_call_error_to_return_value(call_sync_error);
+               log_if_error_(ret);
                g_error_free(call_sync_error);
                return ret;
        }
index 2c23f3e..ba66c33 100644 (file)
@@ -70,14 +70,60 @@ typedef struct {
 #define user_count_ptr_is_null(a, ...) || (a == NULL) __VA_ARGS__
 #define current_user_ptr_is_null(a, ...) || (a == NULL) __VA_ARGS__
 
-#define ret_if_err_(func_) \
+#define log_if_error_(error_) \
+       switch(error_) { \
+               case SUBSESSION_ERROR_NONE: \
+                       break; \
+               case SUBSESSION_ERROR_INVALID_PARAMETER: \
+                       LOGE("%d: Invalid parameter", error_);\
+                       break; \
+               case SUBSESSION_ERROR_IO_ERROR: \
+                       LOGE("%d: IO error", error_);\
+                       break; \
+               case SUBSESSION_ERROR_OUT_OF_MEMORY: \
+                       LOGE("%d: Out of memory", error_);\
+                       break; \
+               case SUBSESSION_ERROR_ALREADY_EXISTS: \
+                       LOGE("%d: Already exists", error_);\
+                       break; \
+               case SUBSESSION_ERROR_NOT_AVAILABLE: \
+                       LOGE("%d: Not available", error_);\
+                       break; \
+               case SUBSESSION_ERROR_RESOURCE_BUSY: \
+                       LOGE("%d: Resource busy", error_);\
+                       break; \
+               case SUBSESSION_ERROR_PERMISSION_DENIED: \
+                       LOGE("%d: Permission denied", error_);\
+                       break; \
+               default: \
+                       LOGE("%d", error_);\
+       }
+
+#define return_with_log_error_result_(func_) \
        int err_ = func_; \
-       if(err_) {return err_ ;}
+       if(err_) { \
+               log_if_error_(err_); \
+       } \
+       return err_;
 
 
-#define error_if(a, error) if ( (0) a ) { return error; }
+#define ret_if_err_(func_) { \
+       int err_ = func_; \
+       if(err_) { \
+               log_if_error_(err_); \
+               return err_ ; \
+       }}
+
+#define error_if(a, error_) if ( (0) a ) { \
+       log_if_error_(error_)  \
+       return error_; \
+}
+
+#define diff_if_not_compared_(a, error_) if ( (0) a ) { \
+       return error_; \
+}
 
-#define maybe_not_comparable_if(a) error_if(a, COMPARATOR_RESULT_DIFFERENT_)
+#define maybe_not_comparable_if(a) diff_if_not_compared_(a, COMPARATOR_RESULT_DIFFERENT_)
 #define return_if(a) error_if(a, SUBSESSION_ERROR_INVALID_PARAMETER)
 
 #ifdef __cplusplus