From a4dcdf1f0bf2ca8471804d098b5051de08a74b49 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz <jakob@collabora.com> Date: Thu, 30 Apr 2020 20:37:24 +0100 Subject: [PATCH] ipc/server: Improve error messages --- src/xrt/ipc/ipc_server_client.c | 16 +++++++++++----- src/xrt/ipc/ipc_server_process.c | 2 ++ src/xrt/ipc/ipc_server_utils.c | 14 ++++++++------ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/xrt/ipc/ipc_server_client.c b/src/xrt/ipc/ipc_server_client.c index e3c0f3238..c15cdf4cf 100644 --- a/src/xrt/ipc/ipc_server_client.c +++ b/src/xrt/ipc/ipc_server_client.c @@ -373,7 +373,10 @@ client_loop(volatile struct ipc_client_state *cs) // We use epoll here to be able to timeout. int ret = epoll_wait(epoll_fd, &event, 1, half_a_second_ms); if (ret < 0) { - fprintf(stderr, "ERROR: Failed epoll_wait '%i'\n", ret); + fprintf(stderr, + "ERROR: Failed epoll_wait '%i', disconnecting " + "client.\n", + ret); break; } @@ -384,13 +387,16 @@ client_loop(volatile struct ipc_client_state *cs) // Detect clients disconnecting gracefully. if (ret > 0 && (event.events & EPOLLHUP) != 0) { + fprintf(stderr, "SERVER: Client disconnected\n"); break; } // Finally get the data that is waiting for us. ssize_t len = recv(cs->ipc_socket_fd, &buf, IPC_BUF_SIZE, 0); if (len < 4) { - fprintf(stderr, "ERROR: Invalid packet received\n"); + fprintf(stderr, + "ERROR: Invalid packet received, disconnecting " + "client.\n"); break; } @@ -398,13 +404,13 @@ client_loop(volatile struct ipc_client_state *cs) ipc_command_t *ipc_command = (uint32_t *)buf; ret = ipc_dispatch(cs, ipc_command); if (ret < 0) { - fprintf(stderr, "ERROR: Failed to dispatch packet\n"); + fprintf(stderr, + "ERROR: During packet handling, disconnecting " + "client.\n"); break; } } - fprintf(stderr, "SERVER: Client disconnected\n"); - close(epoll_fd); epoll_fd = -1; diff --git a/src/xrt/ipc/ipc_server_process.c b/src/xrt/ipc/ipc_server_process.c index c778eb7d4..b7ed653da 100644 --- a/src/xrt/ipc/ipc_server_process.c +++ b/src/xrt/ipc/ipc_server_process.c @@ -498,5 +498,7 @@ ipc_server_main(int argc, char **argv) teardown_all(s); free(s); + fprintf(stderr, "SERVER: Exiting! '%i'\n", ret); + return ret; } diff --git a/src/xrt/ipc/ipc_server_utils.c b/src/xrt/ipc/ipc_server_utils.c index 8c8ed1358..c193c9ad2 100644 --- a/src/xrt/ipc/ipc_server_utils.c +++ b/src/xrt/ipc/ipc_server_utils.c @@ -41,10 +41,10 @@ ipc_reply(int socket, void *data, size_t len) ssize_t ret = sendmsg(socket, &msg, MSG_NOSIGNAL); if (ret < 0) { - printf( - "sending plain message on socket %d failed with error: " - "%s\n", - socket, strerror(errno)); + fprintf(stderr, + "ERROR: Sending plain message on socket %d failed with " + "error: '%i' '%s'\n", + socket, errno, strerror(errno)); } return ret; @@ -77,8 +77,10 @@ ipc_reply_fds(int socket, void *data, size_t size, int *fds, uint32_t num_fds) ssize_t ret = sendmsg(socket, &msg, MSG_NOSIGNAL); if (ret < 0) { - printf("sending %d FDs on socket %d failed with error: %s\n", - num_fds, socket, strerror(errno)); + fprintf(stderr, + "ERROR: sending %d FDs on socket %d failed with error: " + "'%i' '%s'\n", + num_fds, socket, errno, strerror(errno)); } return ret;