diff options
Diffstat (limited to 'redis_commands.c')
-rw-r--r-- | redis_commands.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/redis_commands.c b/redis_commands.c index 6945ed4b..e7cca1a8 100644 --- a/redis_commands.c +++ b/redis_commands.c @@ -4032,11 +4032,16 @@ void redis_setoption_handler(INTERNAL_FUNCTION_PARAMETERS, RETURN_TRUE; case REDIS_OPT_SCAN: val_long = zval_get_long(val); - if (val_long==REDIS_SCAN_NORETRY || val_long==REDIS_SCAN_RETRY) { - redis_sock->scan = val_long; - RETURN_TRUE; + if (val_long == REDIS_SCAN_NORETRY) { + redis_sock->scan &= ~REDIS_SCAN_RETRY; + } else if (val_long == REDIS_SCAN_NOPREFIX) { + redis_sock->scan &= ~REDIS_SCAN_PREFIX; + } else if (val_long == REDIS_SCAN_RETRY || val_long == REDIS_SCAN_PREFIX) { + redis_sock->scan |= val_long; + } else { + break; } - break; + RETURN_TRUE; case REDIS_OPT_FAILOVER: val_long = zval_get_long(val); if (val_long == REDIS_FAILOVER_NONE || |