Move adding match rule code 35/171235/2
authorSuyeon Hwang <stom.hwang@samsung.com>
Mon, 22 Jan 2018 11:35:42 +0000 (20:35 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Wed, 28 Feb 2018 00:49:41 +0000 (00:49 +0000)
Change-Id: I56713583b07392fbdcb5926f0a805c21a4fd736e
Signed-off-by: Suyeon Hwang <stom.hwang@samsung.com>
(cherry picked from commit 4890129b35545db17e2ebf5e84490d8248a21e09)

client/vc.c
client/vc_dbus.c

index da52879..9cfc04b 100644 (file)
@@ -1631,8 +1631,11 @@ int __vc_cb_error(int reason, int daemon_pid, char* msg)
 
        /* check state */
        if (state != VC_STATE_READY) {
-               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] not connected client yet");
-               return -1;
+               if (VC_ERROR_SERVICE_RESET != reason) {
+                       SLOG(LOG_ERROR, TAG_VCC, "[ERROR] not connected client yet");
+                       return -1;
+               }
+               return 0;
        }
 
        if (VC_ERROR_SERVICE_RESET == reason) {
index c8d3937..7bc8cef 100644 (file)
@@ -272,8 +272,8 @@ int vc_dbus_open_connection()
                return 0;
        }
 
-       char rule[128] = {0, };
-       snprintf(rule, 128, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
+       char rule[256] = {0, };
+       snprintf(rule, 256, "type='signal',interface='%s'", VC_CLIENT_SERVICE_INTERFACE);
 
        /* add a rule for which messages we want to see */
        dbus_bus_add_match(g_conn_listener, rule, &err);
@@ -286,6 +286,18 @@ int vc_dbus_open_connection()
                return VC_ERROR_OPERATION_FAILED;
        }
 
+       /* add a rule for daemon error */
+       snprintf(rule, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
+       dbus_bus_add_match(g_conn_listener, rule, &err);
+       dbus_connection_flush(g_conn_listener);
+
+       if (dbus_error_is_set(&err)) {
+               SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
+               dbus_error_free(&err);
+               __vc_dbus_connection_free();
+               return VC_ERROR_OPERATION_FAILED;
+       }
+
        int fd = 0;
        if (1 != dbus_connection_get_unix_fd(g_conn_listener, &fd)) {
                SLOG(LOG_ERROR, TAG_VCC, "fail to get fd from dbus ");
@@ -485,18 +497,6 @@ int vc_dbus_request_initialize(int pid, int* mgr_pid, int* service_state, int* d
                        *service_state = tmp_service_state;
                        *daemon_pid = tmp_daemon_pid;
 
-                       /* add a rule for daemon error */
-                       char rule_err[256] = {0, };
-                       snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", VC_SERVER_SERVICE_INTERFACE);
-                       dbus_bus_add_match(g_conn_listener, rule_err, &err);
-                       dbus_connection_flush(g_conn_listener);
-
-                       if (dbus_error_is_set(&err)) {
-                               SLOG(LOG_ERROR, TAG_VCC, "Match Error (%s)", err.message);
-                               dbus_error_free(&err);
-                               return VC_ERROR_OPERATION_FAILED;
-                       }
-
                        SLOG(LOG_DEBUG, TAG_VCC, "@@ vc initialize : result = %d mgr = %d service = %d daemon_pid = %d", result, *mgr_pid, *service_state, *daemon_pid);
                } else {
                        SLOG(LOG_ERROR, TAG_VCC, "@@ vc initialize : result = %d", result);