X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/4dd444bb4aabc3d6be68f90b67ad8a3a185fd40b..d47ded66ce3c36eb41f38a20ebb5633dfa2e77b0:/src/networking.c diff --git a/src/networking.c b/src/networking.c index 629267d1..3979ab62 100644 --- a/src/networking.c +++ b/src/networking.c @@ -610,7 +610,7 @@ void sendReplyToClient(aeEventLoop *el, int fd, void *privdata, int mask) { } } if (totwritten > 0) c->lastinteraction = time(NULL); - if (listLength(c->reply) == 0) { + if (c->bufpos == 0 && listLength(c->reply) == 0) { c->sentlen = 0; aeDeleteFileEvent(server.el,c->fd,AE_WRITABLE); @@ -793,6 +793,9 @@ int processMultibulkBuffer(redisClient *c) { void processInputBuffer(redisClient *c) { /* Keep processing while there is something in the input buffer */ while(sdslen(c->querybuf)) { + /* Immediately abort if the client is in the middle of something. */ + if (c->flags & REDIS_BLOCKED) return; + /* REDIS_CLOSE_AFTER_REPLY closes the connection once the reply is * written to the client. Make sure to not let the reply grow after * this flag has been set (i.e. don't process more commands). */