Update the fuction of socket timeout 37/107937/6
authorYoungHun Kim <yh8004.kim@samsung.com>
Mon, 2 Jan 2017 03:45:34 +0000 (12:45 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Mon, 2 Jan 2017 04:37:26 +0000 (20:37 -0800)
Change-Id: I1d4f7d1eee3a6b5c66f05b0704aaf8a53747fdfe

include/muse_core_ipc.h
src/muse_core_ipc.c

index d5b06e7..3f04cf3 100644 (file)
@@ -58,7 +58,7 @@ int muse_core_ipc_send_msg(int sock_fd, const char *msg);
 int muse_core_ipc_send_fd_msg(int sock_fd, int *fds, const char *buf);
 int muse_core_ipc_recv_msg(int sock_fd, char *msg);
 int muse_core_ipc_recv_fd_msg(int sock_fd, char *buf, int *out_fd);
-void muse_core_ipc_set_timeout(int sock_fd, unsigned long timeout_sec, int level);
+int muse_core_ipc_set_timeout(int sock_fd, int timeout_sec);
 gboolean muse_core_ipc_data_job_function(muse_core_workqueue_job_t * job);
 int muse_core_ipc_push_data(int sock_fd, const char *data, int size, uint64_t data_id);
 char *muse_core_ipc_get_data(muse_module_h module);
index d38682b..db69ac3 100644 (file)
@@ -671,16 +671,31 @@ int muse_core_ipc_recv_fd_msg(int sock_fd, char *buf, int *out_fd)
        return _muse_core_ipc_verify_msg_complete(sock_fd, buf, ret);
 }
 
-void muse_core_ipc_set_timeout(int sock_fd, unsigned long timeout_sec, int level)
+int muse_core_ipc_set_timeout(int sock_fd, int timeout_sec)
 {
-       LOGD("Enter");
+       char err_msg[MUSE_MAX_ERROR_MSG_LEN] = {'\0',};
        struct timeval tv;
+
+       LOGD("Enter");
+
        tv.tv_sec  = timeout_sec;
        tv.tv_usec = 0L;
 
-       if (setsockopt(sock_fd, SOL_SOCKET, level, (void*)&tv, (socklen_t)sizeof(tv)) == SOCK_ERR)
-               LOGE("Failed to set socket option : %d", level);
+       if (setsockopt(sock_fd, SOL_SOCKET, SO_SNDTIMEO, (void*)&tv, (socklen_t)sizeof(tv)) == SOCK_ERR) {
+               strerror_r(errno, err_msg, MUSE_MAX_ERROR_MSG_LEN);
+               LOGE("[%d] Failed to set socket send timeout option (%s) %d", sock_fd, err_msg, errno);
+               return MM_ERROR_UNKNOWN;
+       }
+
+       if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tv, (socklen_t)sizeof(tv)) == SOCK_ERR) {
+               strerror_r(errno, err_msg, MUSE_MAX_ERROR_MSG_LEN);
+               LOGE("[%d] Failed to set socket recv timeout option (%s) %d", sock_fd, err_msg, errno);
+               return MM_ERROR_UNKNOWN;
+       }
+
        LOGD("Leave");
+
+       return MM_ERROR_NONE;
 }
 
 int muse_core_ipc_push_data(int sock_fd, const char *data, int size, uint64_t data_id)