Commit b91f03a4 authored by Luc Heinrich's avatar Luc Heinrich
Browse files

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.
parent 46713f83
...@@ -135,11 +135,13 @@ static sds cliReadLine(int fd) { ...@@ -135,11 +135,13 @@ static sds cliReadLine(int fd) {
while(1) { while(1) {
char c; char c;
ssize_t ret;
if (read(fd,&c,1) == -1) { ret = read(fd,&c,1);
if (ret == -1) {
sdsfree(line); sdsfree(line);
return NULL; return NULL;
} else if (c == '\n') { } else if ((ret == 0) || (c == '\n')) {
break; break;
} else { } else {
line = sdscatlen(line,&c,1); line = sdscatlen(line,&c,1);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment