]> git.saurik.com Git - redis.git/commitdiff
Fix authentication for redis-cli on non-interactive mode.
authorMichel Martens & Damian Janowski <michel+djanowski@soveran.com>
Tue, 23 Mar 2010 13:54:49 +0000 (10:54 -0300)
committerMichel Martens <michel@soveran.com>
Tue, 23 Mar 2010 14:19:47 +0000 (11:19 -0300)
redis-cli.c

index d418827cb5c41add48cd7b71c3b58ae69bb9723a..502d8527e673008214603c4acfac3f823e532a29 100644 (file)
@@ -307,7 +307,7 @@ static int selectDb(int fd) {
     return 0;
 }
 
-static int cliSendCommand(int argc, char **argv) {
+static int cliSendCommand(int argc, char **argv, int repeat) {
     struct redisCommand *rc = lookupCommand(argv[0]);
     int fd, j, retval = 0;
     int read_forever = 0;
@@ -333,7 +333,7 @@ static int cliSendCommand(int argc, char **argv) {
         return 1;
     }
 
-    while(config.repeat--) {
+    while(repeat--) {
         /* Build the command to send */
         cmd = sdsempty();
         if (rc->flags & REDIS_CMD_MULTIBULK) {
@@ -469,14 +469,6 @@ static void repl() {
     char *line = buffer;
     char **ap, *args[max];
 
-    if (config.auth != NULL) {
-        char *authargv[2];
-
-        authargv[0] = "AUTH";
-        authargv[1] = config.auth;
-        cliSendCommand(2, convertToSds(2, authargv));
-    }
-
     while (prompt(line, size)) {
         argc = 0;
 
@@ -490,8 +482,7 @@ static void repl() {
             }
         }
 
-        config.repeat = 1;
-        cliSendCommand(argc, convertToSds(argc, args));
+        cliSendCommand(argc, convertToSds(argc, args), 1);
         line = buffer;
     }
 
@@ -514,6 +505,14 @@ int main(int argc, char **argv) {
     argc -= firstarg;
     argv += firstarg;
 
+    if (config.auth != NULL) {
+        char *authargv[2];
+
+        authargv[0] = "AUTH";
+        authargv[1] = config.auth;
+        cliSendCommand(2, convertToSds(2, authargv), 1);
+    }
+
     if (argc == 0 || config.interactive == 1) repl();
 
     argvcopy = convertToSds(argc, argv);
@@ -527,5 +526,5 @@ int main(int argc, char **argv) {
       }
     }
 
-    return cliSendCommand(argc, argvcopy);
+    return cliSendCommand(argc, argvcopy, config.repeat);
 }