Integrate IPC related errors 52/215052/1
authorMinje Ahn <minje.ahn@samsung.com>
Tue, 1 Oct 2019 07:34:31 +0000 (16:34 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Tue, 1 Oct 2019 07:34:31 +0000 (16:34 +0900)
Change-Id: I578f3e1e6a838b283bf2013c83a231a3affd6a0f
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
lib/include/media-util-err.h
lib/media-util-cynara.c
lib/media-util-db.c
lib/media-util-ipc.c
src/scanner-v2/media-scanner-scan-v2.c

index 6a9dca0..9d36305 100755 (executable)
 
 /* IPC operation error*/
 #define MS_MEDIA_ERR_IPC                                       -200
-#define MS_MEDIA_ERR_SOCKET_CONN                                       -201    /* socket connect error */
-#define MS_MEDIA_ERR_SOCKET_BIND                                       -202    /* socket binding fails */
-#define MS_MEDIA_ERR_SOCKET_SEND                                       -203    /* socket sending fails */
-#define MS_MEDIA_ERR_SOCKET_RECEIVE                            -204    /* socket receiving fails */
-#define MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT            -205    /* socket receive timeout error */
-#define MS_MEDIA_ERR_SOCKET_ACCEPT                             -206    /* socket accept fails */
-#define MS_MEDIA_ERR_SOCKET_INTERNAL                           -250    /* receive error from socket API */
 
 /* FILE error*/
 #define MS_MEDIA_ERR_FILE_OPEN_FAIL                            -601    /* file opennig fails */
 
 /* Thumbnail error*/
 #define MS_MEDIA_ERR_THUMB_TOO_BIG                             -801    /* Original is too big to make thumb */
-#define MS_MEDIA_ERR_THUMB_DUPLICATED_REQUEST  -802    /* Duplicated request of same path */
 #define MS_MEDIA_ERR_THUMB_UNSUPPORTED         -803    /* Unsupported content */
 
 /*ETC*/
 #define MS_MEDIA_ERR_VCONF_SET_FAIL                            -901    /* vconf setting fails*/
 #define MS_MEDIA_ERR_SCANNER_NOT_READY                 -903    /* scanner is not ready */
 #define MS_MEDIA_ERR_DYNAMIC_LINK                              -904    /* fail to dynamic link */
-#define MS_MEDIA_ERR_INVALID_IPC_MESSAGE                       -905    /* received message is not valid */
-#define MS_MEDIA_ERR_DATA_TAINTED                              -906    /* received data is tainted */
 #define MS_MEDIA_ERR_SEND_NOTI_FAIL                            -907    /* sending notification is failed */
 #define MS_MEDIA_ERR_USB_UNMOUNTED                             -908    /* USB unmounted */
 #define MS_MEDIA_ERR_DB_LIMIT_1                                        -909
index 23ec16d..c12721d 100755 (executable)
@@ -98,25 +98,20 @@ int ms_cynara_receive_untrusted_message(int sockfd, ms_comm_msg_s *recv_msg, ms_
                return MS_MEDIA_ERR_INVALID_PARAMETER;
 
        if ((recv_msg_size = read(sockfd, recv_msg, sizeof(ms_comm_msg_s))) < 0) {
-               if (errno == EWOULDBLOCK) {
-                       MSAPI_DBG_ERR("Timeout. Can't try any more");
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT;
-               } else {
-                       MSAPI_DBG_ERR("recv failed");
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE;
-               }
+               MSAPI_DBG_STRERROR("recv failed");
+               return MS_MEDIA_ERR_IPC;
        }
 
        MSAPI_DBG_SLOG("receive msg from P[%d] T[%d] M[%.*s] S[%.*s]", recv_msg->pid, recv_msg->msg_type, MAX_MSG_SIZE, recv_msg->msg, MS_UUID_SIZE, recv_msg->storage_id);
 
        if (strlen(recv_msg->msg) == 0 || strlen(recv_msg->msg) >= MAX_MSG_SIZE) {
                MSAPI_DBG_ERR("IPC message is wrong. message size is over MAX_MSG_SIZE");
-               return MS_MEDIA_ERR_INVALID_IPC_MESSAGE;
+               return MS_MEDIA_ERR_IPC;
        }
 
        if (strlen(recv_msg->storage_id) >= MS_UUID_SIZE) {
                MSAPI_DBG_ERR("IPC message is wrong. storage_id size is over MS_UUID_SIZE");
-               return MS_MEDIA_ERR_INVALID_IPC_MESSAGE;
+               return MS_MEDIA_ERR_IPC;
        }
 
        ret = cynara_creds_socket_get_pid(sockfd, &(credentials->pid));
@@ -150,15 +145,9 @@ int ms_cynara_receive_untrusted_message_thumb(int sockfd, thumbMsg *recv_msg, ms
        MS_MALLOC(buf, header_size);
 
        if ((recv_msg_size = recv(sockfd, buf, header_size, 0)) < 0) {
-               if (errno == EWOULDBLOCK) {
-                       MSAPI_DBG_ERR("Timeout. Can't try any more");
-                       MS_SAFE_FREE(buf);
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT;
-               } else {
-                       MSAPI_DBG_ERR("recv failed");
-                       MS_SAFE_FREE(buf);
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE;
-               }
+               MSAPI_DBG_STRERROR("recv failed");
+               MS_SAFE_FREE(buf);
+               return MS_MEDIA_ERR_IPC;
        }
 
        memcpy(recv_msg, buf, header_size);
@@ -167,13 +156,13 @@ int ms_cynara_receive_untrusted_message_thumb(int sockfd, thumbMsg *recv_msg, ms
        /* Can be null (kill server msg) */
        if (strlen(recv_msg->org_path) >= MAX_FILEPATH_LEN) {
                MSAPI_DBG_ERR("org_path size is invlid[%zu]", strlen(recv_msg->org_path));
-               return MS_MEDIA_ERR_INVALID_IPC_MESSAGE;
+               return MS_MEDIA_ERR_IPC;
        }
 
        /* Can be null (raw request case) */
        if (strlen(recv_msg->dst_path) >= MAX_FILEPATH_LEN) {
                MSAPI_DBG_ERR("dst_path size is invlid[%zu]", strlen(recv_msg->dst_path));
-               return MS_MEDIA_ERR_INVALID_IPC_MESSAGE;
+               return MS_MEDIA_ERR_IPC;
        }
 
        ret = cynara_creds_socket_get_pid(sockfd, &(credentials->pid));
@@ -216,10 +205,10 @@ int ms_cynara_enable_credentials_passing(int fd)
        int err;
 
        err = setsockopt(fd, SOL_SOCKET, SO_PASSSEC, &optval, sizeof(optval));
-       MSAPI_RETVM_IF(err != 0, MS_MEDIA_ERR_SOCKET_INTERNAL, "Failed to set SO_PASSSEC socket option");
+       MSAPI_RETVM_IF(err != 0, MS_MEDIA_ERR_IPC, "Failed to set SO_PASSSEC socket option");
 
        err = setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &optval, sizeof(optval));
-       MSAPI_RETVM_IF(err != 0, MS_MEDIA_ERR_SOCKET_INTERNAL, "Failed to set SO_PASSCRED socket option");
+       MSAPI_RETVM_IF(err != 0, MS_MEDIA_ERR_IPC, "Failed to set SO_PASSCRED socket option");
 
        return MS_MEDIA_ERR_NONE;
 }
index 8f5ec59..d9f6f81 100755 (executable)
@@ -267,14 +267,14 @@ static int __media_db_request_update_tcp(ms_msg_type_e msg_type, const char *req
                if (errno == EACCES)
                        return MS_MEDIA_ERR_PERMISSION_DENIED;
                else
-                       return MS_MEDIA_ERR_SOCKET_CONN;
+                       return MS_MEDIA_ERR_IPC;
        }
 
        /* Send request */
        if (send(sockfd, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) {
                MSAPI_DBG_STRERROR("send failed");
                close(sockfd);
-               return MS_MEDIA_ERR_SOCKET_SEND;
+               return MS_MEDIA_ERR_IPC;
        }
 
        /*Receive Response*/
@@ -282,30 +282,17 @@ static int __media_db_request_update_tcp(ms_msg_type_e msg_type, const char *req
        int recv_msg = -1;
 RETRY:
        if ((recv_msg_size = recv(sockfd, &recv_msg, sizeof(recv_msg), 0)) < 0) {
-               MSAPI_DBG_ERR("recv failed : [%d]", sockfd);
+               MSAPI_DBG_STRERROR("recv failed");
 
-               if (errno == EINTR) {
-                       MSAPI_DBG_STRERROR("catch interrupt");
-                       goto RETRY;
-               }
-
-               if (errno == EWOULDBLOCK) {
+               if (errno == EINTR || errno == EWOULDBLOCK) {
                        if (retry_count < MAX_RETRY_COUNT) {
                                MSAPI_DBG_ERR("TIME OUT[%d]", retry_count);
                                retry_count++;
                                goto RETRY;
                        }
-
-                       close(sockfd);
-                       MSAPI_DBG_ERR("Timeout. Can't try any more");
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT;
-               } else {
-                       MSAPI_DBG_STRERROR("recv failed");
-
-                       close(sockfd);
-
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE;
                }
+               close(sockfd);
+               return MS_MEDIA_ERR_IPC;
        }
 
        MSAPI_DBG("RECEIVE OK [%d]", recv_msg);
@@ -511,14 +498,14 @@ static int __media_db_request_recovery(uid_t uid)
        if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
                MSAPI_DBG_STRERROR("connect error");
                close(sockfd);
-               return MS_MEDIA_ERR_SOCKET_CONN;
+               return MS_MEDIA_ERR_IPC;
        }
 
        /* Send request */
        if (send(sockfd, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) {
                MSAPI_DBG_STRERROR("send failed");
                close(sockfd);
-               return MS_MEDIA_ERR_SOCKET_SEND;
+               return MS_MEDIA_ERR_IPC;
        }
 
        /*Receive Response*/
@@ -526,30 +513,17 @@ static int __media_db_request_recovery(uid_t uid)
        ms_comm_msg_s recv_msg;
 RETRY:
        if ((recv_msg_size = recv(sockfd, &recv_msg, sizeof(recv_msg), 0)) < 0) {
-               MSAPI_DBG_ERR("recv failed : [%d]", sockfd);
+               MSAPI_DBG_STRERROR("recv failed");
 
-               if (errno == EINTR) {
-                       MSAPI_DBG_STRERROR("catch interrupt");
-                       goto RETRY;
-               }
-
-               if (errno == EWOULDBLOCK) {
+               if (errno == EINTR || errno == EWOULDBLOCK) {
                        if (retry_count < MAX_RETRY_COUNT) {
                                MSAPI_DBG_ERR("TIME OUT[%d]", retry_count);
                                retry_count++;
                                goto RETRY;
                        }
-
-                       close(sockfd);
-                       MSAPI_DBG_ERR("Timeout. Can't try any more");
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT;
-               } else {
-                       MSAPI_DBG_STRERROR("recv failed");
-
-                       close(sockfd);
-
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE;
                }
+               close(sockfd);
+               return MS_MEDIA_ERR_IPC;
        }
 
        MSAPI_DBG("RECEIVE OK [%d]", recv_msg.result);
index e52f2fa..bd93e91 100755 (executable)
@@ -48,14 +48,14 @@ int ms_ipc_create_client_socket(int timeout_sec, int *sock_fd)
        /*Create TCP Socket*/
        if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
                MSAPI_DBG_STRERROR("socket failed");
-               return MS_MEDIA_ERR_SOCKET_CONN;
+               return MS_MEDIA_ERR_IPC;
        }
 
        if (timeout_sec > 0) {
                if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv_timeout, sizeof(tv_timeout)) == -1) {
                        MSAPI_DBG_STRERROR("setsockopt failed");
                        close(sock);
-                       return MS_MEDIA_ERR_SOCKET_CONN;
+                       return MS_MEDIA_ERR_IPC;
                }
        }
 
@@ -67,7 +67,6 @@ int ms_ipc_create_client_socket(int timeout_sec, int *sock_fd)
 int ms_ipc_create_server_socket(ms_msg_port_type_e port, int *sock_fd)
 {
        int i;
-       bool bind_success = false;
        int sock = -1;
        struct sockaddr_un serv_addr;
        unsigned short serv_port;
@@ -76,7 +75,7 @@ int ms_ipc_create_server_socket(ms_msg_port_type_e port, int *sock_fd)
        /* Create a TCP socket */
        if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) {
                MSAPI_DBG_STRERROR("socket failed");
-               return MS_MEDIA_ERR_SOCKET_CONN;
+               return MS_MEDIA_ERR_IPC;
        }
 
        memset(&serv_addr, 0, sizeof(serv_addr));
@@ -86,26 +85,22 @@ int ms_ipc_create_server_socket(ms_msg_port_type_e port, int *sock_fd)
 
        /* Bind to the local address */
        for (i = 0; i < 100; i++) {
-               if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) {
-                       bind_success = true;
+               if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0)
                        break;
-               }
                MSAPI_DBG("%d", i);
                usleep(250000);
        }
 
-       if (bind_success == false) {
+       if (i == 100) {
                MSAPI_DBG_ERR("bind failed[%s]", serv_addr.sun_path);
-               close(sock);
-               return MS_MEDIA_ERR_SOCKET_CONN;
+               goto ERROR;
        }
        MSAPI_DBG("bind success");
 
        /* Listening */
        if (listen(sock, SOMAXCONN) < 0) {
                MSAPI_DBG_ERR("listen failed");
-               close(sock);
-               return MS_MEDIA_ERR_SOCKET_CONN;
+               goto ERROR;
        }
        MSAPI_DBG("Listening...");
 
@@ -116,6 +111,10 @@ int ms_ipc_create_server_socket(ms_msg_port_type_e port, int *sock_fd)
        *sock_fd = sock;
 
        return MS_MEDIA_ERR_NONE;
+ERROR:
+       close(sock);
+
+       return MS_MEDIA_ERR_IPC;
 }
 
 int ms_ipc_send_msg_to_server_tcp(int sockfd, ms_msg_port_type_e port, ms_comm_msg_s *send_msg, struct sockaddr_un *serv_addr)
@@ -134,12 +133,12 @@ int ms_ipc_send_msg_to_server_tcp(int sockfd, ms_msg_port_type_e port, ms_comm_m
                if (errno == EACCES || errno == EPERM)
                        return MS_MEDIA_ERR_PERMISSION_DENIED;
                else
-                       return MS_MEDIA_ERR_SOCKET_CONN;
+                       return MS_MEDIA_ERR_IPC;
        }
 
        if (write(sockfd, send_msg, sizeof(*(send_msg))) != sizeof(*(send_msg))) {
                MSAPI_DBG_STRERROR("write failed");
-               return MS_MEDIA_ERR_SOCKET_SEND;
+               return MS_MEDIA_ERR_IPC;
        } else {
                MSAPI_DBG_SLOG("result[%d] message[%.*s]", send_msg->result, MAX_MSG_SIZE, send_msg->msg);
                if (serv_addr != NULL)
@@ -153,7 +152,7 @@ int ms_ipc_send_msg_to_client_tcp(int sockfd, ms_comm_msg_s *send_msg, struct so
 {
        if (write(sockfd, send_msg, sizeof(*(send_msg))) != sizeof(*(send_msg))) {
                MSAPI_DBG_STRERROR("write failed");
-               return MS_MEDIA_ERR_SOCKET_SEND;
+               return MS_MEDIA_ERR_IPC;
        }
 
        MSAPI_DBG_SLOG("result[%d] message[%.*s]", send_msg->result, MAX_MSG_SIZE, send_msg->msg);
@@ -173,7 +172,7 @@ int ms_ipc_accept_client_tcp(int serv_sock, int* client_sock)
        if ((sockfd = accept(serv_sock, (struct sockaddr*)&client_addr, &client_addr_len)) < 0) {
                MSAPI_DBG_STRERROR("accept failed");
                *client_sock = -1;
-               return MS_MEDIA_ERR_SOCKET_ACCEPT;
+               return MS_MEDIA_ERR_IPC;
        }
 
        *client_sock = sockfd;
@@ -186,20 +185,15 @@ int ms_ipc_receive_message_tcp(int client_sock, ms_comm_msg_s *recv_msg)
        int recv_msg_size = 0;
 
        if ((recv_msg_size = read(client_sock, recv_msg, sizeof(ms_comm_msg_s))) < 0) {
-               if (errno == EWOULDBLOCK) {
-                       MSAPI_DBG_ERR("Timeout. Can't try any more");
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT;
-               } else {
-                       MSAPI_DBG_STRERROR("recv failed");
-                       return MS_MEDIA_ERR_SOCKET_RECEIVE;
-               }
+               MSAPI_DBG_STRERROR("recv failed");
+               return MS_MEDIA_ERR_IPC;
        }
 
        MSAPI_DBG_SLOG("receive msg from P[%d] T[%d] M[%.*s]", recv_msg->pid, recv_msg->msg_type, MAX_MSG_SIZE, recv_msg->msg);
 
        if (strlen(recv_msg->msg) == 0 || strlen(recv_msg->msg) >= MAX_MSG_SIZE) {
                MSAPI_DBG_ERR("IPC message is wrong. message size is over MAX_MSG_SIZE");
-               return MS_MEDIA_ERR_INVALID_IPC_MESSAGE;
+               return MS_MEDIA_ERR_IPC;
        }
 
        return MS_MEDIA_ERR_NONE;
index 2854e95..a0ec099 100755 (executable)
@@ -1690,7 +1690,7 @@ static int __msc_pop_register_request(GArray *register_array, ms_comm_msg_s **re
 
        if ((strlen((*register_data)->msg) <= 0) || (strlen((*register_data)->msg) >= MS_FILE_PATH_LEN_MAX)) {
                MS_DBG_ERR("message size[%zu] is wrong", strlen((*register_data)->msg));
-               return MS_MEDIA_ERR_INVALID_IPC_MESSAGE;
+               return MS_MEDIA_ERR_IPC;
        }
 
        return MS_MEDIA_ERR_NONE;