mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
Sentinel: fix SENTINEL SET error reporting.
Thanks to @shenlongxing for reporting the problem. Related to #5062.
This commit is contained in:
parent
fc0c9c8097
commit
3cf8dd2c84
@ -3380,7 +3380,8 @@ void sentinelRoleCommand(client *c) {
|
||||
void sentinelSetCommand(client *c) {
|
||||
sentinelRedisInstance *ri;
|
||||
int j, changes = 0;
|
||||
char *option, *value;
|
||||
int badarg = 0; /* Bad argument position for error reporting. */
|
||||
char *option;
|
||||
|
||||
if ((ri = sentinelGetMasterByNameOrReplyError(c,c->argv[2]))
|
||||
== NULL) return;
|
||||
@ -3395,28 +3396,34 @@ void sentinelSetCommand(client *c) {
|
||||
if (!strcasecmp(option,"down-after-milliseconds") && moreargs > 0) {
|
||||
/* down-after-millisecodns <milliseconds> */
|
||||
robj *o = c->argv[++j];
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0)
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0) {
|
||||
badarg = j;
|
||||
goto badfmt;
|
||||
}
|
||||
ri->down_after_period = ll;
|
||||
sentinelPropagateDownAfterPeriod(ri);
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"failover-timeout") && moreargs > 0) {
|
||||
/* failover-timeout <milliseconds> */
|
||||
robj *o = c->argv[++j];
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0)
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0) {
|
||||
badarg = j;
|
||||
goto badfmt;
|
||||
}
|
||||
ri->failover_timeout = ll;
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"parallel-syncs") && moreargs > 0) {
|
||||
/* parallel-syncs <milliseconds> */
|
||||
robj *o = c->argv[++j];
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0)
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0) {
|
||||
badarg = j;
|
||||
goto badfmt;
|
||||
}
|
||||
ri->parallel_syncs = ll;
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"notification-script") && moreargs > 0) {
|
||||
/* notification-script <path> */
|
||||
value = c->argv[++j]->ptr;
|
||||
char *value = c->argv[++j]->ptr;
|
||||
if (sentinel.deny_scripts_reconfig) {
|
||||
addReplyError(c,
|
||||
"Reconfiguration of scripts path is denied for "
|
||||
@ -3436,7 +3443,7 @@ void sentinelSetCommand(client *c) {
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"client-reconfig-script") && moreargs > 0) {
|
||||
/* client-reconfig-script <path> */
|
||||
value = c->argv[++j]->ptr;
|
||||
char *value = c->argv[++j]->ptr;
|
||||
if (sentinel.deny_scripts_reconfig) {
|
||||
addReplyError(c,
|
||||
"Reconfiguration of scripts path is denied for "
|
||||
@ -3457,15 +3464,17 @@ void sentinelSetCommand(client *c) {
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"auth-pass") && moreargs > 0) {
|
||||
/* auth-pass <password> */
|
||||
value = c->argv[++j]->ptr;
|
||||
char *value = c->argv[++j]->ptr;
|
||||
sdsfree(ri->auth_pass);
|
||||
ri->auth_pass = strlen(value) ? sdsnew(value) : NULL;
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"quorum") && moreargs > 0) {
|
||||
/* quorum <count> */
|
||||
robj *o = c->argv[++j];
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0)
|
||||
if (getLongLongFromObject(o,&ll) == C_ERR || ll <= 0) {
|
||||
badarg = j;
|
||||
goto badfmt;
|
||||
}
|
||||
ri->quorum = ll;
|
||||
changes++;
|
||||
} else if (!strcasecmp(option,"rename-command") && moreargs > 1) {
|
||||
@ -3516,7 +3525,7 @@ void sentinelSetCommand(client *c) {
|
||||
badfmt: /* Bad format errors */
|
||||
if (changes) sentinelFlushConfig();
|
||||
addReplyErrorFormat(c,"Invalid argument '%s' for SENTINEL SET '%s'",
|
||||
value, option);
|
||||
c->argv[badarg]->ptr,option);
|
||||
}
|
||||
|
||||
/* Our fake PUBLISH command: it is actually useful only to receive hello messages
|
||||
|
Loading…
Reference in New Issue
Block a user