From 4908f71b75c7ffa6bb76396afd186eaedf1a2044 Mon Sep 17 00:00:00 2001 From: Michael Preisach Date: Thu, 16 Sep 2021 13:49:43 +0000 Subject: [PATCH] another fix for server connection handling --- server.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/server.c b/server.c index 8d47e7f..9467e7a 100644 --- a/server.c +++ b/server.c @@ -54,14 +54,15 @@ int server_start(conn_handler handler, int16_t port) { for(ret = 0; 0 == ret;) { bzero(buffer, MAX_BUFSIZE); len = 0; - for(int i = 0; 0 < i && buffer[len-1] != '\n';) { - i = read(clientfd, &buffer[len], sizeof(buffer)-len); - len += i; - } - if (0 > len) { + do { + ret = read(clientfd, &buffer[len], sizeof(buffer)-len); + len += ret; + } while(0 < ret && buffer[len-1] != '\n'); + + if (0 > ret) { printf("server_start: cannot read from socket\n"); ret = -1; - } else if(0 == len) { + } else if(0 == ret) { printf("server_start: client closed connection\n"); ret = 1; } else {