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 {