From becbee427685f923b7b37b28e932ee4fd6c3451e Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Thu, 26 Sep 2019 10:00:59 +0900 Subject: [PATCH] Code cleanup Change some return values. Improve some functions. Change-Id: I5092f4ce2fbf734b9ce66374afaad8f233101a30 Signed-off-by: Minje Ahn --- src/dcm_svc_ipc.c | 57 ++++++++++++++++------------------------------ svc/dcm_svc_main.c | 22 +++++++----------- 2 files changed, 28 insertions(+), 51 deletions(-) diff --git a/src/dcm_svc_ipc.c b/src/dcm_svc_ipc.c index af0fef7..6613ce0 100755 --- a/src/dcm_svc_ipc.c +++ b/src/dcm_svc_ipc.c @@ -29,31 +29,19 @@ static char DCM_IPC_PATH[][100] = { {"media-server/media_ipc_dcmdaemon.socket"}, {"media-server/media_ipc_dcmcomm.socket"}, }; +#define DCM_MAX_RETRY 100 int dcm_ipc_receive_message(int client_sock, dcmMsg *recv_msg) { - int recv_msg_size = 0; - - if ((recv_msg_size = read(client_sock, recv_msg, sizeof(dcmMsg))) < 0) { - if (errno == EWOULDBLOCK) { - dcm_error("Timeout. Can't try any more"); - return MS_MEDIA_ERR_SOCKET_RECEIVE_TIMEOUT; - } else { - dcm_stderror("recv failed"); - return MS_MEDIA_ERR_SOCKET_RECEIVE; - } - } - dcm_sec_debug("[receive msg] type[%d] pid[%d] uid[%d] msg[%.*s]", recv_msg->msg_type, recv_msg->pid, recv_msg->uid, MAX_FILEPATH_LEN, (recv_msg->msg) ? recv_msg->msg : "NULL"); - - if (!(recv_msg->msg_type >= 0 && recv_msg->msg_type < DCM_MSG_MAX)) { - dcm_error("IPC message is wrong!"); - return MS_MEDIA_ERR_INVALID_IPC_MESSAGE; + if (read(client_sock, recv_msg, sizeof(dcmMsg)) < 0) { + dcm_stderror("recv failed"); + return MS_MEDIA_ERR_IPC; } return MS_MEDIA_ERR_NONE; } -int dcm_ipc_accept_socket(int serv_sock, int* client_sock) +int dcm_ipc_accept_socket(int serv_sock, int *client_sock) { DCM_CHECK_VAL(client_sock, MS_MEDIA_ERR_INVALID_PARAMETER); int sockfd = -1; @@ -63,7 +51,7 @@ int dcm_ipc_accept_socket(int serv_sock, int* client_sock) if ((sockfd = accept(serv_sock, (struct sockaddr*)&client_addr, &client_addr_len)) < 0) { dcm_stderror("accept failed"); *client_sock = -1; - return MS_MEDIA_ERR_SOCKET_ACCEPT; + return MS_MEDIA_ERR_IPC; } *client_sock = sockfd; @@ -76,13 +64,12 @@ int dcm_ipc_create_socket(int *socket_fd, dcm_ipc_port_e port) DCM_CHECK_VAL(socket_fd, MS_MEDIA_ERR_INVALID_PARAMETER); int sock = -1; struct sockaddr_un serv_addr; - gboolean bind_success = false; int i = 0; /* Create a new TCP socket */ if ((sock = socket(PF_FILE, SOCK_STREAM, 0)) < 0) { dcm_stderror("socket failed"); - return MS_MEDIA_ERR_SOCKET_INTERNAL; + return MS_MEDIA_ERR_IPC; } /* Set socket address */ @@ -92,27 +79,27 @@ int dcm_ipc_create_socket(int *socket_fd, dcm_ipc_port_e port) DCM_SAFE_STRLCPY(serv_addr.sun_path, tzplatform_mkpath(TZ_SYS_RUN, DCM_IPC_PATH[port]), sizeof(serv_addr.sun_path)); /* Bind socket to local address */ - for (i = 0; i < 100; i++) { - if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) { - bind_success = true; + for (i = 0; i < DCM_MAX_RETRY; i++) { + if (bind(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == 0) break; - } + dcm_debug("#%d bind", i); usleep(250000); } - if (bind_success == false) { + if (i == DCM_MAX_RETRY) { dcm_stderror("bind failed"); close(sock); - return MS_MEDIA_ERR_SOCKET_BIND; + return MS_MEDIA_ERR_IPC; } + dcm_debug("bind success"); /* Listen */ if (listen(sock, SOMAXCONN) < 0) { dcm_stderror("listen failed"); close(sock); - return MS_MEDIA_ERR_SOCKET_INTERNAL; + return MS_MEDIA_ERR_IPC; } dcm_debug("Listening..."); @@ -140,7 +127,7 @@ int dcm_ipc_send_client_message(int socket_fd, int result, const char *msg) /* Send msg to the socket */ if (send(socket_fd, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) { dcm_stderror("send failed"); - return MS_MEDIA_ERR_SOCKET_SEND; + return MS_MEDIA_ERR_IPC; } dcm_debug("Sent result [%d]", send_msg.result); @@ -164,7 +151,7 @@ int dcm_ipc_send_ready(void) /* Create a new UDS socket */ if ((socket_fd = socket(PF_FILE, SOCK_STREAM, 0)) < 0) { dcm_stderror("socket failed"); - return MS_MEDIA_ERR_SOCKET_SEND; + return MS_MEDIA_ERR_IPC; } /* Set dcm thread socket address */ @@ -176,14 +163,14 @@ int dcm_ipc_send_ready(void) if (connect(socket_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { dcm_stderror("connect error"); close(socket_fd); - return MS_MEDIA_ERR_SOCKET_CONN; + return MS_MEDIA_ERR_IPC; } /* Send msg to the socket */ if (send(socket_fd, &send_msg, sizeof(send_msg), 0) != sizeof(send_msg)) { dcm_stderror("send failed"); close(socket_fd); - return MS_MEDIA_ERR_SOCKET_SEND; + return MS_MEDIA_ERR_IPC; } close(socket_fd); @@ -195,10 +182,6 @@ int dcm_ipc_send_ready(void) void dcm_ipc_close_socket(int socket_fd) { - if (socket_fd < 0) { - dcm_error("The socket has been closed already."); - return; - } - - close(socket_fd); + if (socket_fd != -1) + close(socket_fd); } diff --git a/svc/dcm_svc_main.c b/svc/dcm_svc_main.c index 4a0da8c..78844ae 100755 --- a/svc/dcm_svc_main.c +++ b/svc/dcm_svc_main.c @@ -28,13 +28,13 @@ static GMainLoop *g_dcm_svc_mainloop; static void __dcm_svc_kill_service(void) { - if (g_dcm_svc_mainloop != NULL) { + if (g_dcm_svc_mainloop) { dcm_warn("Shutting down DCM Service"); g_main_loop_quit(g_dcm_svc_mainloop); } } -gboolean dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gpointer data) +static gboolean __dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gpointer data) { dcmMsg recv_msg; int sock = -1; @@ -45,22 +45,15 @@ gboolean dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gp memset((void *)&recv_msg, 0, sizeof(recv_msg)); sock = g_io_channel_unix_get_fd(src); - if (sock < 0) { - dcm_error("sock fd is invalid!"); - return TRUE; - } + dcm_retvm_if(sock < 0, G_SOURCE_CONTINUE, "sock fd is invalid!"); /* Accept tcp client socket */ ret = dcm_ipc_accept_socket(sock, &client_sock); - if (ret != MS_MEDIA_ERR_NONE) { - dcm_error("Failed to accept tcp socket! err: %d", ret); - return TRUE; - } + dcm_retvm_if(ret != MS_MEDIA_ERR_NONE, G_SOURCE_CONTINUE, "Failed to accept tcp socket! err: %d", ret); if (dcm_ipc_receive_message(client_sock, &recv_msg) != MS_MEDIA_ERR_NONE) { dcm_error("getRecvMsg failed"); - dcm_ipc_close_socket(client_sock); - return TRUE; + goto ERROR; } dcm_sec_info("msg_type[%d] uid[%d] msg[%.*s]", recv_msg.msg_type, recv_msg.uid, MAX_FILEPATH_LEN, recv_msg.msg); @@ -84,9 +77,10 @@ gboolean dcm_service_recieve_request(GIOChannel *src, GIOCondition condition, gp dcm_debug("Invalid message(%d)", recv_msg.msg_type); } +ERROR: dcm_ipc_close_socket(client_sock); - return TRUE; + return G_SOURCE_CONTINUE; } int main(int argc, char *argv[]) @@ -110,7 +104,7 @@ int main(int argc, char *argv[]) source = g_io_create_watch(channel, G_IO_IN); /* Set callback to be called when socket is readable */ - g_source_set_callback(source, (GSourceFunc)dcm_service_recieve_request, NULL, NULL); + g_source_set_callback(source, (GSourceFunc)__dcm_service_recieve_request, NULL, NULL); g_source_attach(source, context); if (dcm_face_detect_initialize() != MS_MEDIA_ERR_NONE) -- 2.34.1