From e553c9df2482e5f5aa18924e66c5198e24b2afbf Mon Sep 17 00:00:00 2001 From: Sameer Prakash Pradhan Date: Tue, 18 Jun 2019 16:17:52 +0530 Subject: [PATCH] Increased wait time and error handling Signed-off-by: Sameer Prakash Pradhan Change-Id: I155546507e67b2346dc57be9c1de6db287d59c74 --- src/pims-ipc.c | 15 ++++++++++++--- src/pims-socket.c | 10 +++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/pims-ipc.c b/src/pims-ipc.c index 3de9e26..a936105 100644 --- a/src/pims-ipc.c +++ b/src/pims-ipc.c @@ -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"); diff --git a/src/pims-socket.c b/src/pims-socket.c index 24cdc36..db4ad32 100644 --- a/src/pims-socket.c +++ b/src/pims-socket.c @@ -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); -- 2.7.4