Try to prepare when dbus call is requested earlier while a vc engine is reset 08/168008/1
authorSuyeon Hwang <stom.hwang@samsung.com>
Mon, 15 Jan 2018 06:49:53 +0000 (15:49 +0900)
committerSuyeon Hwang <stom.hwang@samsung.com>
Tue, 23 Jan 2018 10:49:06 +0000 (10:49 +0000)
Change-Id: Id95a5d7154681cd4b066b8e6582d15eabe7774f6
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
(cherry picked from commit d4e615b4a7be6a668af8e61319be43f009478e26)

client/vc.c

index c942050..da52879 100644 (file)
@@ -566,7 +566,6 @@ static void __start_prepare_thread(void *data, Ecore_Thread *thread)
 
        /* Send hello */
        while (0 != ret) {
-
                if (retry_count == 10) {
                        SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to request hello !!");
                        return;
@@ -655,7 +654,7 @@ int vc_prepare_sync(void)
 
        /* check state */
        if (state != VC_STATE_INITIALIZED) {
-               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Invalid State: Current state is not 'CREATED'");
+               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Invalid State: Current state is not 'INITIALIZED'");
                SLOG(LOG_DEBUG, TAG_VCC, "@@@");
                return VC_ERROR_INVALID_STATE;
        }
@@ -913,11 +912,17 @@ int vc_get_system_command_list(vc_cmd_list_h* vc_sys_cmd_list)
        bool is_sys_cmd_valid = false;
        int count = 0;
        int ret = -1;
-
+       bool is_prepared = false;
        do {
                ret = vc_dbus_request_is_system_command_valid(g_vc->handle, &is_sys_cmd_valid);
                if (0 != ret) {
-                       if (VC_ERROR_TIMED_OUT != ret) {
+                       if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                               vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                               if (0 == vc_prepare_sync()) {
+                                       is_prepared = true;
+                                       SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                               }
+                       } else if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to ask system command is : %s", __vc_get_error_code(ret));
                                break;
                        } else {
@@ -1150,10 +1155,17 @@ int vc_set_command_list(vc_cmd_list_h vc_cmd_list, int type)
                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to save command list : %s", __vc_get_error_code(ret));
        } else {
                int count = 0;
+               bool is_prepared = false;
                do {
                        ret = vc_dbus_request_set_command(g_vc->handle, (vc_cmd_type_e)type);
                        if (0 != ret) {
-                               if (VC_ERROR_TIMED_OUT != ret) {
+                               if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                                       vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                                       if (0 == vc_prepare_sync()) {
+                                               is_prepared = true;
+                                               SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                                       }
+                               } else if (VC_ERROR_TIMED_OUT != ret) {
                                        SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to request set command to daemon : %s", __vc_get_error_code(ret));
                                        break;
                                } else {
@@ -1209,10 +1221,17 @@ int vc_unset_command_list(int type)
 
        int count = 0;
        int ret = -1;
+       bool is_prepared = false;
        while (0 != ret) {
                ret = vc_dbus_request_unset_command(g_vc->handle, (vc_cmd_type_e)type);
                if (0 != ret) {
-                       if (VC_ERROR_TIMED_OUT != ret) {
+                       if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                               vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                               if (0 == vc_prepare_sync()) {
+                                       is_prepared = true;
+                                       SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                               }
+                       } else if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to request unset command to daemon : %s", __vc_get_error_code(ret));
                                break;
                        } else {
@@ -1289,10 +1308,17 @@ int vc_set_command_list_from_file(const char* file_path, int type)
                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to set commands from file : %s", __vc_get_error_code(ret));
        } else {
                int count = 0;
+               bool is_prepared = false;
                do {
                        ret = vc_dbus_request_set_command(g_vc->handle, (vc_cmd_type_e)type);
                        if (0 != ret) {
-                               if (VC_ERROR_TIMED_OUT != ret) {
+                               if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                                       vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                                       if (0 == vc_prepare_sync()) {
+                                               is_prepared = true;
+                                               SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                                       }
+                               } else if (VC_ERROR_TIMED_OUT != ret) {
                                        SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to request set command to daemon : %s", __vc_get_error_code(ret));
                                        break;
                                } else {
@@ -2411,15 +2437,20 @@ int vc_auth_start(void)
                return VC_ERROR_OPERATION_FAILED;
        }
 
-       int ret;
+       int ret = -1;
        int count = 0;
+       bool is_prepared = false;
        /* Request */
-       ret = -1;
-       count = 0;
        while (0 != ret) {
                ret = vc_dbus_request_auth_start(g_vc->handle, mgr_pid);
                if (0 != ret) {
-                       if (VC_ERROR_TIMED_OUT != ret) {
+                       if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                               vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                               if (0 == vc_prepare_sync()) {
+                                       is_prepared = true;
+                                       SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                               }
+                       } else if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Fail to request auth start : %s", __vc_get_error_code(ret));
                                break;
                        } else {
@@ -2489,11 +2520,18 @@ int vc_auth_stop(void)
 
        int ret = -1;
        int count = 0;
+       bool is_prepared = false;
        /* do request */
        while (0 != ret) {
                ret = vc_dbus_request_auth_stop(g_vc->handle, mgr_pid);
                if (0 != ret) {
-                       if (VC_ERROR_TIMED_OUT != ret) {
+                       if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                               vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                               if (0 == vc_prepare_sync()) {
+                                       is_prepared = true;
+                                       SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                               }
+                       } else if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_DEBUG, TAG_VCC, "[ERROR] Fail to request auth stop: %s", __vc_get_error_code(ret));
                                break;
                        } else {
@@ -2563,10 +2601,17 @@ int vc_auth_cancel(void)
 
        int ret = -1;
        int count = 0;
+       bool is_prepared = false;
        while (0 != ret) {
                ret = vc_dbus_request_auth_cancel(g_vc->handle, mgr_pid);
                if (0 != ret) {
-                       if (VC_ERROR_TIMED_OUT != ret) {
+                       if (VC_ERROR_INVALID_PARAMETER == ret && false == is_prepared) {
+                               vc_client_set_client_state(g_vc, VC_STATE_INITIALIZED);
+                               if (0 == vc_prepare_sync()) {
+                                       is_prepared = true;
+                                       SLOG(LOG_INFO, TAG_VCC, "[INFO] Success vc_prepare_sync");
+                               }
+                       } else if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_DEBUG, TAG_VCC, "[ERROR] Fail to request auth cancel: %s", __vc_get_error_code(ret));
                                break;
                        } else {