From 3ff9d1d6298ee2ce48b1140012b8613555abf058 Mon Sep 17 00:00:00 2001 From: Rachit Garg Date: Tue, 13 Dec 2022 13:36:34 +0100 Subject: [PATCH] Fixed server crash issue The server would crash if client exited after establishing connection. clientExited variable takes care of the issue. --- AF_UNIX/server.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/AF_UNIX/server.c b/AF_UNIX/server.c index 5c683e1..eb27461 100644 --- a/AF_UNIX/server.c +++ b/AF_UNIX/server.c @@ -26,6 +26,7 @@ main(int argc, char *argv[]) int result; int data; char buffer[BUFFER_SIZE]; + int clientExited = 0; // for avoiding the server crash in case client closes connection /*In case the program exited inadvertently on the last run, *remove the socket. @@ -112,12 +113,26 @@ main(int argc, char *argv[]) perror("read"); exit(EXIT_FAILURE); } + + else if (ret == 0) // check if client exited + { + printf("Client exited\n"); + clientExited = 1; + break; + } /* Add received summand. */ memcpy(&data, buffer, sizeof(int)); if(data == 0) break; result += data; } + + // skip writing in case client exited + if (clientExited) + { + clientExited = 0; + continue; + } /* Send result. */ memset(buffer, 0, BUFFER_SIZE);