]> git.saurik.com Git - redis.git/commitdiff
AUTH merged from Brian Hammond fork, reworked a bit to fix minor problems
authorantirez <antirez@gmail.com>
Thu, 26 Mar 2009 10:46:14 +0000 (11:46 +0100)
committerantirez <antirez@gmail.com>
Thu, 26 Mar 2009 10:46:14 +0000 (11:46 +0100)
TODO
redis.c

diff --git a/TODO b/TODO
index bb137a8db3e7557e97aba9bb263620f429e2f92c..6e5317ba5c8c45f759f6ff6a32dae522c4c5b0dd 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,7 +1,7 @@
 - Protocol changes as discussed in the Redis group
 - keys expire
 - sunion ssub
-- write integers in a special way on disk (and on memory?)
+- write integers in a special way on disk, use the unused 11|.... length.
 - compact types for disk storing of short strings (no 4 bytes overhead!)
 - network layer stresser in test in demo
 - maxclients directive
diff --git a/redis.c b/redis.c
index fa62c54cbc586c10719ecc4dc0d9eb9686197c93..fb18e090e6b16c3eadd40b3b536728fb2efa3337 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -1099,10 +1099,6 @@ static int processCommand(redisClient *c) {
         addReplySds(c,sdsnew("-ERR wrong number of arguments\r\n"));
         resetClient(c);
         return 1;
-    } else if (server.requirepass && !c->authenticated && strcmp(c->argv[0]->ptr,"auth")) {
-        addReplySds(c,sdsnew("-ERR operation not permitted\r\n"));
-        resetClient(c);
-        return 1;
     } else if (cmd->flags & REDIS_CMD_BULK && c->bulklen == -1) {
         int bulklen = atoi(c->argv[c->argc-1]->ptr);
 
@@ -1131,6 +1127,13 @@ static int processCommand(redisClient *c) {
         for(j = 1; j < c->argc; j++)
             c->argv[j] = tryObjectSharing(c->argv[j]);
     }
+    /* Check if the user is authenticated */
+    if (server.requirepass && !c->authenticated && cmd->proc != authCommand) {
+        addReplySds(c,sdsnew("-ERR operation not permitted\r\n"));
+        resetClient(c);
+        return 1;
+    }
+
     /* Exec the command */
     dirty = server.dirty;
     cmd->proc(c);