When REDIS_CLOSE_AFTER_REPLY is set, there may never be new replies

This commit is contained in:
Pieter Noordhuis 2010-10-28 16:52:16 +01:00
parent 5e78edb350
commit a3a323e0e5
2 changed files with 5 additions and 1 deletions

View File

@ -55,7 +55,12 @@ redisClient *createClient(int fd) {
return c;
}
/* Set the event loop to listen for write events on the client's socket.
* Typically gets called every time a reply is built. */
int _installWriteEvent(redisClient *c) {
/* When CLOSE_AFTER_REPLY is set, no more replies may be added! */
redisAssert(!(c->flags & REDIS_CLOSE_AFTER_REPLY));
if (c->fd <= 0) return REDIS_ERR;
if (c->bufpos == 0 && listLength(c->reply) == 0 &&
(c->replstate == REDIS_REPL_NONE ||

View File

@ -893,7 +893,6 @@ int processCommand(redisClient *c) {
* go through checking for replication and QUIT will cause trouble
* when FORCE_REPLICATION is enabled and would be implemented in
* a regular command proc. */
redisAssert(!(c->flags & REDIS_CLOSE_AFTER_REPLY));
if (!strcasecmp(c->argv[0]->ptr,"quit")) {
addReply(c,shared.ok);
c->flags |= REDIS_CLOSE_AFTER_REPLY;