mirror of
https://github.com/fluencelabs/redis
synced 2025-04-01 15:21:03 +00:00
Merge pull request #5836 from soloestoy/fix-acl-warning
ACL: show categories in COMMAND reply
This commit is contained in:
commit
fd7484cde2
14
src/acl.c
14
src/acl.c
@ -1446,7 +1446,7 @@ void aclCommand(client *c) {
|
|||||||
} else if (!strcasecmp(sub,"cat") && c->argc == 3) {
|
} else if (!strcasecmp(sub,"cat") && c->argc == 3) {
|
||||||
uint64_t cflag = ACLGetCommandCategoryFlagByName(c->argv[2]->ptr);
|
uint64_t cflag = ACLGetCommandCategoryFlagByName(c->argv[2]->ptr);
|
||||||
if (cflag == 0) {
|
if (cflag == 0) {
|
||||||
addReplyErrorFormat(c, "Unknown category '%s'", c->argv[2]->ptr);
|
addReplyErrorFormat(c, "Unknown category '%s'", (char*)c->argv[2]->ptr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int arraylen = 0;
|
int arraylen = 0;
|
||||||
@ -1480,3 +1480,15 @@ NULL
|
|||||||
addReplySubcommandSyntaxError(c);
|
addReplySubcommandSyntaxError(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addReplyCommandCategories(client *c, struct redisCommand *cmd) {
|
||||||
|
int flagcount = 0;
|
||||||
|
void *flaglen = addReplyDeferredLen(c);
|
||||||
|
for (int j = 0; ACLCommandCategories[j].flag != 0; j++) {
|
||||||
|
if (cmd->flags & ACLCommandCategories[j].flag) {
|
||||||
|
addReplyStatusFormat(c, "@%s", ACLCommandCategories[j].name);
|
||||||
|
flagcount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setDeferredSetLen(c, flaglen, flagcount);
|
||||||
|
}
|
||||||
|
@ -3698,8 +3698,8 @@ void addReplyCommand(client *c, struct redisCommand *cmd) {
|
|||||||
if (!cmd) {
|
if (!cmd) {
|
||||||
addReplyNull(c);
|
addReplyNull(c);
|
||||||
} else {
|
} else {
|
||||||
/* We are adding: command name, arg count, flags, first, last, offset */
|
/* We are adding: command name, arg count, flags, first, last, offset, categories */
|
||||||
addReplyArrayLen(c, 6);
|
addReplyArrayLen(c, 7);
|
||||||
addReplyBulkCString(c, cmd->name);
|
addReplyBulkCString(c, cmd->name);
|
||||||
addReplyLongLong(c, cmd->arity);
|
addReplyLongLong(c, cmd->arity);
|
||||||
|
|
||||||
@ -3729,6 +3729,8 @@ void addReplyCommand(client *c, struct redisCommand *cmd) {
|
|||||||
addReplyLongLong(c, cmd->firstkey);
|
addReplyLongLong(c, cmd->firstkey);
|
||||||
addReplyLongLong(c, cmd->lastkey);
|
addReplyLongLong(c, cmd->lastkey);
|
||||||
addReplyLongLong(c, cmd->keystep);
|
addReplyLongLong(c, cmd->keystep);
|
||||||
|
|
||||||
|
addReplyCommandCategories(c,cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1748,6 +1748,7 @@ char *ACLSetUserStringError(void);
|
|||||||
int ACLLoadConfiguredUsers(void);
|
int ACLLoadConfiguredUsers(void);
|
||||||
sds ACLDescribeUser(user *u);
|
sds ACLDescribeUser(user *u);
|
||||||
void ACLLoadUsersAtStartup(void);
|
void ACLLoadUsersAtStartup(void);
|
||||||
|
void addReplyCommandCategories(client *c, struct redisCommand *cmd);
|
||||||
|
|
||||||
/* Sorted sets data type */
|
/* Sorted sets data type */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user