processUnblockedClients: don't process clients that blocekd again

This commit is contained in:
antirez 2015-05-05 16:35:44 +02:00
parent f7bd816bbb
commit 2bc1527a95

View File

@ -117,12 +117,17 @@ void processUnblockedClients(void) {
listDelNode(server.unblocked_clients,ln);
c->flags &= ~REDIS_UNBLOCKED;
/* Process remaining data in the input buffer. */
/* Process remaining data in the input buffer, unless the client
* is blocked again. Actually processInputBuffer() checks that the
* client is not blocked before to proceed, but things may change and
* the code is conceptually more correct this way. */
if (!(c->flags & DISQUE_BLOCKED)) {
if (c->querybuf && sdslen(c->querybuf) > 0) {
processInputBuffer(c);
}
}
}
}
/* Unblock a client calling the right function depending on the kind
* of operation the client is blocking for. */