From 6fc2e4d2b971ed1cc3e4519bacdceb1a7c7a6a35 Mon Sep 17 00:00:00 2001 From: Barry Kane Date: Tue, 19 Mar 2024 23:28:12 +0000 Subject: [PATCH] Close client if connection breaks. * source/client/receiving-thread.c (receivingThreadHandler): Exit the process if the connection to the server breaks. * source/server/main.c (main): Minor formatting tweak. --- source/client/receiving-thread.c | 8 +++++++- source/server/main.c | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/source/client/receiving-thread.c b/source/client/receiving-thread.c index 41b78c3..dd3e900 100644 --- a/source/client/receiving-thread.c +++ b/source/client/receiving-thread.c @@ -34,10 +34,16 @@ void * receivingThreadHandler(void * threadArguments) wattrset(gameWindow, A_NORMAL); struct ServerToClientMessage currentMessage; + int returnValue = 0; while (true) { - gnutls_record_recv(session, ¤tMessage, sizeof(struct ServerToClientMessage)); + returnValue = gnutls_record_recv(session, ¤tMessage, sizeof(struct ServerToClientMessage)); + if (gnutls_error_is_fatal(returnValue)) + { + exit(EXIT_SUCCESS); + } + switch (currentMessage.type) { case SYSTEM: diff --git a/source/server/main.c b/source/server/main.c index 8795652..c327280 100644 --- a/source/server/main.c +++ b/source/server/main.c @@ -231,6 +231,7 @@ int main (int argc, char ** argv) gnutls_credentials_set(*tlsSession, GNUTLS_CRD_ANON, serverKey); gnutls_handshake_set_timeout(*tlsSession, GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT); gnutls_handshake_set_post_client_hello_function(*tlsSession, checkRequestedHostname); + // Accept the connection: int newSocket = accept(masterSocket, NULL, NULL); gnutls_transport_set_int(*tlsSession, newSocket);