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.
This commit is contained in:
Luc Heinrich 2009-03-23 12:43:16 +01:00
parent 46713f83d4
commit b91f03a4d1

View File

@ -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);