From a97c9bb795d65ed26b8aca04f60d5f191e0c1c2e Mon Sep 17 00:00:00 2001 From: Haejeong Kim Date: Tue, 13 Jun 2017 10:58:47 +0900 Subject: [PATCH] IPC Fail fix. Use common socket msg format. remove DcmIpcMsg and use dcmMsg Change-Id: I24b11032c45c34b9344bb547a423de87857bc32f --- include/DcmIpcUtils.h | 3 ++- include/DcmTypes.h | 9 --------- packaging/dcm-service.spec | 2 +- src/DcmIpcUtils.cpp | 16 ++++++++-------- src/DcmScanSvc.cpp | 10 +++++----- svc/DcmMainSvc.cpp | 6 +++--- 6 files changed, 19 insertions(+), 27 deletions(-) diff --git a/include/DcmIpcUtils.h b/include/DcmIpcUtils.h index 00bab42..ccf5466 100755 --- a/include/DcmIpcUtils.h +++ b/include/DcmIpcUtils.h @@ -19,13 +19,14 @@ #define _DCM_SVC_IPC_H_ #include +#include #define DCM_TIMEOUT_SEC_60 60 /**< Response to media server time out */ namespace DcmIpcUtils { int createSocket(int *socket_fd, DcmIpcPortType port); int acceptSocket(int serv_sock, int *client_sock); - int receiveSocketMsg(int client_sock, DcmIpcMsg *recv_msg); + int receiveSocketMsg(int client_sock, dcmMsg *recv_msg); int sendSocketMsg(DcmIpcMsgType msg_type, uid_t uid, const char *msg, DcmIpcPortType port); int sendCompleteMsg(DcmIpcMsgType msg_type, const unsigned int count, const char *msg, DcmIpcPortType port); int sendClientSocketMsg(int socket_fd, DcmIpcMsgType msg_type, unsigned int result, const char *msg, DcmIpcPortType port); diff --git a/include/DcmTypes.h b/include/DcmTypes.h index f88b417..ad606b3 100755 --- a/include/DcmTypes.h +++ b/include/DcmTypes.h @@ -75,15 +75,6 @@ typedef enum { DCM_IPC_PORT_MAX, } DcmIpcPortType; -typedef struct { - DcmIpcMsgType msg_type; - int pid; - uid_t uid; - int result; - size_t msg_size; /*this is size of message below and this does not include the terminationg null byte ('\0'). */ - char msg[DCM_IPC_MSG_MAX_SIZE]; -} DcmIpcMsg; - typedef enum { DCM_SCAN_ITEM_TYPE_NONE, DCM_SCAN_ITEM_TYPE_SCAN_ALL, diff --git a/packaging/dcm-service.spec b/packaging/dcm-service.spec index 96bc169..2a01799 100755 --- a/packaging/dcm-service.spec +++ b/packaging/dcm-service.spec @@ -1,6 +1,6 @@ Name: dcm-service Summary: A media DCM(Digital Contents Management) Service -Version: 0.0.16 +Version: 0.0.17 Release: 0 Group: Multimedia/Service License: Apache-2.0 diff --git a/src/DcmIpcUtils.cpp b/src/DcmIpcUtils.cpp index 7d347ea..72a6d39 100755 --- a/src/DcmIpcUtils.cpp +++ b/src/DcmIpcUtils.cpp @@ -39,11 +39,11 @@ static char DCM_IPC_PATH[][100] = { {"/var/run/media-server/media_ipc_dcmcomm.socket"}, }; -int DcmIpcUtils::receiveSocketMsg(int client_sock, DcmIpcMsg *recv_msg) +int DcmIpcUtils::receiveSocketMsg(int client_sock, dcmMsg *recv_msg) { int recv_msg_size = 0; - if ((recv_msg_size = read(client_sock, recv_msg, sizeof(DcmIpcMsg))) < 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 DCM_ERROR_IPC; @@ -142,7 +142,7 @@ int DcmIpcUtils::sendClientSocketMsg(int socket_fd, DcmIpcMsgType msg_type, unsi } dcm_debug("Send message type: %d %s %d", msg_type, msg, result); - DcmIpcMsg send_msg; + dcmMsg send_msg; int sock = -1; if (socket_fd < 0) { @@ -175,7 +175,7 @@ int DcmIpcUtils::sendClientSocketMsg(int socket_fd, DcmIpcMsgType msg_type, unsi } /* Prepare send message */ - memset((void *)&send_msg, 0, sizeof(DcmIpcMsg)); + memset((void *)&send_msg, 0, sizeof(dcmMsg)); send_msg.msg_type = msg_type; send_msg.result = (int)result; if (msg != NULL) { @@ -213,10 +213,10 @@ int DcmIpcUtils::sendSocketMsg(DcmIpcMsgType msg_type, uid_t uid, const char *ms int socket_fd = -1; struct sockaddr_un serv_addr; - DcmIpcMsg send_msg; + dcmMsg send_msg; /* Prepare send message */ - memset((void *)&send_msg, 0, sizeof(DcmIpcMsg)); + memset((void *)&send_msg, 0, sizeof(dcmMsg)); send_msg.msg_type = msg_type; send_msg.uid = uid; if (msg != NULL) { @@ -269,10 +269,10 @@ int DcmIpcUtils::sendCompleteMsg(DcmIpcMsgType msg_type, const unsigned int coun int socket_fd = -1; struct sockaddr_un serv_addr; - DcmIpcMsg send_msg; + dcmMsg send_msg; /* Prepare send message */ - memset((void *)&send_msg, 0, sizeof(DcmIpcMsg)); + memset((void *)&send_msg, 0, sizeof(dcmMsg)); send_msg.msg_type = msg_type; send_msg.result = count; if (msg != NULL) { diff --git a/src/DcmScanSvc.cpp b/src/DcmScanSvc.cpp index 57fe46b..16d3b14 100755 --- a/src/DcmScanSvc.cpp +++ b/src/DcmScanSvc.cpp @@ -73,7 +73,7 @@ public: int ScanAllItems(); int ScanSingleItem(const char *file_path); int terminateScanOperations(); - int receiveMsg(DcmIpcMsg *recv_msg); + int receiveMsg(dcmMsg *recv_msg); }; @@ -590,7 +590,7 @@ int DcmScanSvc::terminateScanOperations() return createQuitTimerScanThread(); } -int DcmScanSvc::receiveMsg(DcmIpcMsg *recv_msg) +int DcmScanSvc::receiveMsg(dcmMsg *recv_msg) { int ret = DCM_SUCCESS; @@ -659,7 +659,7 @@ gboolean DcmScanCallback::readMsg(GIOChannel *src, GIOCondition condition, gpoin DcmScanSvc *dcmScanSvc = (DcmScanSvc *) data; int sock = -1; int client_sock = -1; - DcmIpcMsg recv_msg; + dcmMsg recv_msg; int err = 0; DCM_CHECK_FALSE(data); @@ -704,14 +704,14 @@ DCM_SVC_SCAN_READ_THREAD_RECV_SOCKET_FAILED: gboolean DcmScanCallback::readyScanThreadIdle(gpointer data) { DcmMainSvc *ad = (DcmMainSvc *) data; - DcmIpcMsg *async_queue_msg = NULL; + dcmMsg *async_queue_msg = NULL; dcm_debug_fenter(); DCM_CHECK_FALSE(data); DCM_CHECK_FALSE(ad->scan_thread_ready); - async_queue_msg = (DcmIpcMsg*) g_malloc0(sizeof(DcmIpcMsg)); + async_queue_msg = (dcmMsg*) g_malloc0(sizeof(dcmMsg)); if (async_queue_msg == NULL) { dcm_error("memory allocation failed"); return FALSE; diff --git a/svc/DcmMainSvc.cpp b/svc/DcmMainSvc.cpp index e33896c..123c0d2 100755 --- a/svc/DcmMainSvc.cpp +++ b/svc/DcmMainSvc.cpp @@ -76,10 +76,10 @@ void DcmMainSvc::dcmServiceFinishjobs(void) int DcmMainSvc::waitScanThreadReady() { int ret = DCM_SUCCESS; - DcmIpcMsg *async_queue_msg = NULL; + dcmMsg *async_queue_msg = NULL; /* Wait until the scan thread is ready (timeout: 5 sec) */ - async_queue_msg = (DcmIpcMsg *)g_async_queue_timeout_pop(scan_thread_ready, 5000000); + async_queue_msg = (dcmMsg *)g_async_queue_timeout_pop(scan_thread_ready, 5000000); if (async_queue_msg == NULL) { dcm_error("Async queue timeout!"); return DCM_ERROR_ASYNC_QUEUE_FAILED; @@ -135,7 +135,7 @@ int DcmMainSvc::createScanThread() gboolean DcmMainSvcCallBack::readMsg(GIOChannel *src, GIOCondition condition, gpointer data) { - DcmIpcMsg recv_msg; + dcmMsg recv_msg; int sock = -1; int client_sock = -1; int ret = 0; -- 2.34.1