Skip to content

Commit d83d451

Browse files
committed
Fix Command parsing
1 parent 1244ca3 commit d83d451

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

command.go

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1935,7 +1935,13 @@ func (cmd *CommandsInfoCmd) readReply(rd *proto.Reader) error {
19351935
}
19361936

19371937
func commandInfoParser(rd *proto.Reader, n int64) (interface{}, error) {
1938-
if n != 7 {
1938+
const numArgRedis5 = 6
1939+
const numArgRedis6 = 7
1940+
1941+
switch n {
1942+
case numArgRedis5, numArgRedis6:
1943+
// continue
1944+
default:
19391945
return nil, fmt.Errorf("redis: got %d elements in COMMAND reply, wanted 7", n)
19401946
}
19411947

@@ -1989,9 +1995,20 @@ func commandInfoParser(rd *proto.Reader, n int64) (interface{}, error) {
19891995
}
19901996
cmd.StepCount = int8(stepCount)
19911997

1998+
for _, flag := range cmd.Flags {
1999+
if flag == "readonly" {
2000+
cmd.ReadOnly = true
2001+
break
2002+
}
2003+
}
2004+
2005+
if n == numArgRedis5 {
2006+
return &cmd, nil
2007+
}
2008+
19922009
_, err = rd.ReadReply(func(rd *proto.Reader, n int64) (interface{}, error) {
19932010
cmd.ACLFlags = make([]string, n)
1994-
for i := 0; i < len(cmd.Flags); i++ {
2011+
for i := 0; i < len(cmd.ACLFlags); i++ {
19952012
switch s, err := rd.ReadString(); {
19962013
case err == Nil:
19972014
cmd.ACLFlags[i] = ""
@@ -2007,13 +2024,6 @@ func commandInfoParser(rd *proto.Reader, n int64) (interface{}, error) {
20072024
return nil, err
20082025
}
20092026

2010-
for _, flag := range cmd.Flags {
2011-
if flag == "readonly" {
2012-
cmd.ReadOnly = true
2013-
break
2014-
}
2015-
}
2016-
20172027
return &cmd, nil
20182028
}
20192029

0 commit comments

Comments
 (0)