Increased wait time and error handling 11/208111/6 accepted/tizen/unified/20190621.121908 submit/tizen/20190621.050122
authorSameer Prakash Pradhan <sp.pradhan@samsung.com>
Tue, 18 Jun 2019 10:47:52 +0000 (16:17 +0530)
committerSameer Prakash Pradhan <sp.pradhan@samsung.com>
Fri, 21 Jun 2019 03:57:28 +0000 (09:27 +0530)
Signed-off-by: Sameer Prakash Pradhan <sp.pradhan@samsung.com>
Change-Id: I155546507e67b2346dc57be9c1de6db287d59c74

src/pims-ipc.c
src/pims-socket.c

index 3de9e26..a936105 100644 (file)
@@ -400,16 +400,20 @@ static int __pims_ipc_receive(pims_ipc_s *handle, pims_ipc_data_h *data_out)
 
        while (1) {
                while (1) {
-                       ret = poll(pollfds, 1, 1000);
+                       ret = poll(pollfds, 1, 4500);
                        if (ret == -1 && (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK))
                                continue;
 
                        break;
                }
 
+               if (ret == 0){
+                       ERR("timedout errno[%d], revents[%d]", errno, pollfds[0].revents);
+                       return -1;
+               }
                if (ret > 0) {
                        if (pollfds[0].revents & (POLLERR|POLLHUP)) {
-                               ERR("Server disconnected");
+                               ERR("Server disconnected ret[%d]", ret);
                                ret = -1;
                                break;
                        }
@@ -720,6 +724,7 @@ static pims_ipc_h __pims_ipc_create(char *service, pims_ipc_mode_e mode)
                        break;
                }
                VERBOSE("connect to server : socket:%s, client_sock:%d, %d\n", handle->service, handle->fd, ret);
+               DBG("connect to server : socket:%s, client_sock:%d, %d\n", handle->service, handle->fd, ret);
 
                if (mode == PIMS_IPC_MODE_REQ) {
                        GIOChannel *ch = g_io_channel_unix_new(handle->fd);
@@ -733,7 +738,11 @@ static pims_ipc_h __pims_ipc_create(char *service, pims_ipc_mode_e mode)
                                ERR("__pims_ipc_send_identify error");
                                break;
                        }
-                       __pims_ipc_receive(handle, NULL);
+                       ret = __pims_ipc_receive(handle, NULL);
+                       if (ret < 0) {
+                               ERR("__pims_ipc_receive error");
+                               break;
+                       }
 
                        if (pims_ipc_call(handle, PIMS_IPC_MODULE_INTERNAL, PIMS_IPC_FUNCTION_CREATE, NULL, NULL) != 0)
                                WARN("pims_ipc_call(PIMS_IPC_FUNCTION_CREATE) failed");
index 24cdc36..db4ad32 100644 (file)
@@ -36,7 +36,7 @@
 #include "pims-socket.h"
 
 #define MAX_ARRAY_LEN 65535
-#define PIMS_WAIT_MSEC 1000
+#define PIMS_WAIT_MSEC 4500
 
 static int _get_pid(int fd)
 {
@@ -80,6 +80,10 @@ static int _sub_timespec_in_msec(struct timespec *st)
        /* 3 digits for sec, 3 digits for msec */
        int s_msec = ((st->tv_sec % 1000) * 1000) + (st->tv_nsec / 1000000);
        int e_msec = ((et.tv_sec % 1000) * 1000) + (et.tv_nsec / 1000000);
+
+       if (e_msec < s_msec)
+               e_msec += (1000 * 1000);
+
        return e_msec - s_msec;
 }
 
@@ -108,7 +112,7 @@ int socket_send(int fd, char *buf, int len)
                                } else {
                                        int diff_msec = _sub_timespec_in_msec(&st);
                                        if (PIMS_WAIT_MSEC < diff_msec) {
-                                               ERR("EAGAIN error. send retry");
+                                               ERR("EAGAIN error. send retry: errno[%d]", errno);
                                                DBG("send timestamp (%ld.%ld)sec and wait (%d)msec", st.tv_sec, st.tv_nsec, diff_msec);
                                                int pid = _get_pid(fd);
                                                if (true == _is_send_block(fd)) {
@@ -602,7 +606,7 @@ void socket_set_handler(void *user_data)
                WARN_IF(ret != 0, "listen() Fail(%d)", ret);
        }
        ret = chown(ipc_svc->service, getuid(), ipc_svc->group);
-       WARN_IF(ret != 0, "chown() Fail(%d)", ret);
+       WARN_IF(ret != 0, "chown(%s) Fail(errno = %d)",ipc_svc->service, errno);
        ret = chmod(ipc_svc->service, ipc_svc->mode);
        WARN_IF(ret != 0, "chmod() Fail(%d)", ret);