Adding extra logs
[platform/core/pim/contacts-service.git] / common / ctsvc_socket.c
index d837ba9..189285d 100644 (file)
@@ -26,7 +26,9 @@
 #include "ctsvc_socket.h"
 #include "ctsvc_mutex.h"
 #include "ctsvc_inotify.h"
-
+#ifdef _CONTACTS_IPC_CLIENT
+#include "ctsvc_client_utils.h"
+#endif
 static int __ctsvc_conn_refcnt = 0;
 static int __ctsvc_sockfd = -1;
 
@@ -34,14 +36,26 @@ int ctsvc_socket_init(void)
 {
        int ret;
        struct sockaddr_un caddr;
+       uid_t uid = getuid();
 
+       WARN("ctsvc_socket_init: socket ref count : %d", __ctsvc_conn_refcnt);
        if (0 < __ctsvc_conn_refcnt) {
                __ctsvc_conn_refcnt++;
                return  CONTACTS_ERROR_NONE;
        }
 
        char sock_file[CTSVC_PATH_MAX_LEN] = {0};
-       snprintf(sock_file, sizeof(sock_file), CTSVC_SOCK_PATH"/%s", getuid(), CTSVC_SOCKET_FILE);
+
+#ifdef _CONTACTS_IPC_CLIENT
+       if (ctsvc_client_is_in_system_session()) {
+               /* LCOV_EXCL_START */
+               if (CONTACTS_ERROR_NONE != ctsvc_client_get_active_uid(&uid))
+                       return CONTACTS_ERROR_SYSTEM;
+               /* LCOV_EXCL_STOP */
+       }
+#endif
+
+       snprintf(sock_file, sizeof(sock_file), CTSVC_SOCK_PATH"/%s", uid, CTSVC_SOCKET_FILE);
 
        bzero(&caddr, sizeof(caddr));
        caddr.sun_family = AF_UNIX;
@@ -53,10 +67,12 @@ int ctsvc_socket_init(void)
 
        ret = connect(__ctsvc_sockfd, (struct sockaddr *)&caddr, sizeof(caddr));
        if (-1 == ret) {
+               /* LCOV_EXCL_START */
                ERR("connect() Fail(errno = %d)", errno);
                close(__ctsvc_sockfd);
                __ctsvc_sockfd = -1;
                return CONTACTS_ERROR_IPC;
+               /* LCOV_EXCL_STOP */
        }
 
        __ctsvc_conn_refcnt++;
@@ -134,6 +150,21 @@ static int __ctsvc_socket_handle_return(int fd, ctsvc_socket_msg_s *msg)
        return CONTACTS_ERROR_NONE;
 }
 
+static int __ctsvc_cancel_sim_import(int fd)
+{
+       int ret;
+       ctsvc_socket_msg_s msg = {0};
+
+       RETVM_IF(-1 == fd, CONTACTS_ERROR_IPC, "socket is not connected");
+
+       msg.type = CTSVC_SOCKET_MSG_TYPE_CANCEL_IMPORT_SIM;
+
+       ret = __ctsvc_safe_write(fd, (char *)&msg, sizeof(msg));
+       RETVM_IF(-1 == ret, CONTACTS_ERROR_IPC, "__ctsvc_safe_write() Fail(errno = %d)", errno);
+
+       return CONTACTS_ERROR_NONE;
+}
+
 static int __ctsvc_client_socket_response_handler(int fd, ctsvc_socket_msg_s *msg, contacts_sim_import_progress_cb callback, void *user_data)
 {
        CTS_FN_CALL;
@@ -151,10 +182,12 @@ static int __ctsvc_client_socket_response_handler(int fd, ctsvc_socket_msg_s *ms
 
                case CTSVC_SOCKET_MSG_TYPE_REQUEST_INVOKE_CB:
                        DBG("total[%d], index[%d]", msg->val, msg->data);
-                       if (callback)
-                               callback(msg->val, msg->data, user_data);
-                       else
+                       if (callback) {
+                               if (false == callback(msg->val, msg->data, user_data))
+                                       __ctsvc_cancel_sim_import(fd);
+                       } else {
                                WARN("No callback");
+                       }
                        break;
 
                /* LCOV_EXCL_START */