From b91f03a4d14c166bb8ead41e5b556b1080ccd559 Mon Sep 17 00:00:00 2001 From: Luc Heinrich Date: Mon, 23 Mar 2009 12:43:16 +0100 Subject: [PATCH] Fixed redis-cli readLine loop to correctly handle EOF. When using the shutdown command with redis-cli the server saves the database and, if successful, silently closes the connection. The redis-cli tool did not correcty handle this EOF case in its readLine loop and was therefore infinitely looping - and eating 100% of the CPU - while waiting for some data which would never come. --- redis-cli.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/redis-cli.c b/redis-cli.c index 38c986b34..cd106684f 100644 --- a/redis-cli.c +++ b/redis-cli.c @@ -135,11 +135,13 @@ static sds cliReadLine(int fd) { while(1) { char c; + ssize_t ret; - if (read(fd,&c,1) == -1) { + ret = read(fd,&c,1); + if (ret == -1) { sdsfree(line); return NULL; - } else if (c == '\n') { + } else if ((ret == 0) || (c == '\n')) { break; } else { line = sdscatlen(line,&c,1); -- GitLab