diff --git a/redis-cli.c b/redis-cli.c index 98e9bdf16bf6b175510a7ae0437489546d7e6b2a..863df9bf857f81d19d118ad26999b276d7b7ace8 100644 --- a/redis-cli.c +++ b/redis-cli.c @@ -356,6 +356,7 @@ static int selectDb(int fd) { static int cliSendCommand(int argc, char **argv, int repeat) { struct redisCommand *rc = lookupCommand(argv[0]); + int shutdown = 0; int fd, j, retval = 0; sds cmd; @@ -370,6 +371,8 @@ static int cliSendCommand(int argc, char **argv, int repeat) { fprintf(stderr,"Wrong number of arguments for '%s'\n",rc->name); return 1; } + + if (!strcasecmp(rc->name,"shutdown")) shutdown = 1; if (!strcasecmp(rc->name,"monitor")) config.monitor_mode = 1; if (!strcasecmp(rc->name,"subscribe") || !strcasecmp(rc->name,"psubscribe")) config.pubsub_mode = 1; @@ -408,7 +411,7 @@ static int cliSendCommand(int argc, char **argv, int repeat) { retval = cliReadReply(fd); if (retval) { - return retval; + return shutdown ? 0 : retval; } } return 0;