From 99fc3898606bf9bc2a732facffc1a6fe6bfcf3a2 Mon Sep 17 00:00:00 2001 From: nsensfel Date: Tue, 7 Jan 2020 11:06:51 +0100 Subject: ... --- src/server/communication_thread.c | 40 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'src/server/communication_thread.c') diff --git a/src/server/communication_thread.c b/src/server/communication_thread.c index cc91065..fd8f5cf 100644 --- a/src/server/communication_thread.c +++ b/src/server/communication_thread.c @@ -1,4 +1,8 @@ /**** POSIX *******************************************************************/ +#include +#include + +#include #include #include @@ -6,6 +10,8 @@ #include #include +#include + /******************************************************************************/ /**** LOCAL FUNCTIONS *********************************************************/ /******************************************************************************/ @@ -48,6 +54,8 @@ static void main_loop (struct relabsd_server server [const static 1]) FD_SET(communication_socket, &ready_to_read); FD_SET(interrupt_fd, &ready_to_read); + errno = 0; + ready_fds = select ( @@ -58,10 +66,30 @@ static void main_loop (struct relabsd_server server [const static 1]) (struct timeval *) NULL ); + if (ready_fds == -1) + { + RELABSD_ERROR + ( + "Unable to select on the server's socket: %s.", + strerror(errno) + ); + + relabsd_server_interrupt(); + } + /* TODO: select error handling. */ if (!relabsd_server_keep_running()) { + relabsd_server_destroy_communication_node + ( + relabsd_parameters_get_communication_node_name + ( + &(server->parameters) + ), + communication_socket + ); + return; } @@ -83,7 +111,17 @@ static void main_loop (struct relabsd_server server [const static 1]) strerror(errno) ); - return -1; + relabsd_server_interrupt(); + relabsd_server_destroy_communication_node + ( + relabsd_parameters_get_communication_node_name + ( + &(server->parameters) + ), + communication_socket + ); + + return; } (void) relabsd_server_handle_client(current_client_socket, server); -- cgit v1.2.3-70-g09d2