diff options
author | antirez <antirez@gmail.com> | 2010-08-30 11:51:45 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2010-08-30 11:51:45 +0200 |
commit | e0e1c195202dd74ab22554dd4293672cc95368ee (patch) | |
tree | 3d2b38f641a9dedc2cc18618033c504885ab4d95 | |
parent | 8fedd04dccd08e9a25652a22c2034d3f38f72d0f (diff) | |
download | redis-e0e1c195202dd74ab22554dd4293672cc95368ee.tar.gz |
Fixed MONITOR mode and Issue 296
-rw-r--r-- | src/db.c | 6 | ||||
-rw-r--r-- | src/redis-cli.c | 5 |
2 files changed, 6 insertions, 5 deletions
@@ -221,19 +221,19 @@ void keysCommand(redisClient *c) { dictIterator *di; dictEntry *de; sds pattern = c->argv[1]->ptr; - int plen = sdslen(pattern); + int plen = sdslen(pattern), allkeys; unsigned long numkeys = 0; robj *lenobj = createObject(REDIS_STRING,NULL); di = dictGetIterator(c->db->dict); addReply(c,lenobj); decrRefCount(lenobj); + allkeys = (pattern[0] == '*' && pattern[1] == '\0'); while((de = dictNext(di)) != NULL) { sds key = dictGetEntryKey(de); robj *keyobj; - if ((pattern[0] == '*' && pattern[1] == '\0') || - stringmatchlen(pattern,plen,key,sdslen(key),0)) { + if (allkeys || stringmatchlen(pattern,plen,key,sdslen(key),0)) { keyobj = createStringObject(key,sdslen(key)); if (expireIfNeeded(c->db,keyobj) == 0) { addReplyBulk(c,keyobj); diff --git a/src/redis-cli.c b/src/redis-cli.c index 8b7d0777d..3a6b0a902 100644 --- a/src/redis-cli.c +++ b/src/redis-cli.c @@ -96,7 +96,7 @@ static sds cliReadLine(int fd) { ssize_t ret; ret = read(fd,&c,1); - if (ret == -1) { + if (ret <= 0) { sdsfree(line); return NULL; } else if ((ret == 0) || (c == '\n')) { @@ -282,7 +282,8 @@ static int cliSendCommand(int argc, char **argv, int repeat) { while(repeat--) { anetWrite(fd,cmd,sdslen(cmd)); while (config.monitor_mode) { - cliReadSingleLineReply(fd,0); + if (cliReadSingleLineReply(fd,0)) exit(1); + printf("\n"); } if (config.pubsub_mode) { |