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:
parent
46713f83d4
commit
b91f03a4d1
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user