@@ -13,6 +13,7 @@ const (
1313 ModifyAlternate = "alternate"
1414 ModifySort = "sort"
1515 ModifyEvalStyle = "eval_style"
16+ ModifyEvalShaStyle = "evalsha_style"
1617 ModifyScanStyle = "scan_style"
1718
1819 ReviveFirst = "first"
@@ -27,7 +28,9 @@ var namespacedCommands = map[string]string{
2728 "BRPOP" : ModifyExcludeLast , "BRPOPLPUSH" : ModifyExcludeLast , "BZPOPMIN" : ModifyFirst ,
2829 "BZPOPMAX" : ModifyFirst , "DECR" : ModifyFirst , "DECRBY" : ModifyFirst , "DEL" : ModifyAll ,
2930 "DUMP" : ModifyFirst , "EXISTS" : ModifyAll , "EXPIRE" : ModifyFirst , "EXPIREAT" : ModifyFirst ,
30- "EXPIRETIME" : ModifyFirst , "EVAL" : ModifyEvalStyle , "EVALSHA" : ModifyEvalStyle ,
31+ "EXPIRETIME" : ModifyFirst , "EVAL" : ModifyEvalStyle , "EVALSHA" : ModifyEvalShaStyle ,
32+ "EVAL_RO" : ModifyEvalStyle , "EVALSHA_RO" : ModifyEvalShaStyle ,
33+ "FCALL" : ModifyEvalStyle , "FCALL_RO" : ModifyEvalStyle ,
3134 "GET" : ModifyFirst , "GETEX" : ModifyFirst , "GETBIT" : ModifyFirst , "GETRANGE" : ModifyFirst ,
3235 "GETSET" : ModifyFirst , "HSET" : ModifyFirst , "HSETNX" : ModifyFirst , "HGET" : ModifyFirst ,
3336 "HINCRBY" : ModifyFirst , "HINCRBYFLOAT" : ModifyFirst , "HMGET" : ModifyFirst ,
@@ -133,8 +136,19 @@ func modSingleCommand(command, username string, args [][]byte) ([][]byte, revive
133136 i += 1
134137 }
135138 }
136- case ModifyEvalStyle :
137- for i := 2 ; i < 1 + len (args )/ 2 ; i ++ {
139+ case ModifyEvalStyle , ModifyEvalShaStyle :
140+ kpos := 2
141+ if modType == ModifyEvalShaStyle {
142+ kpos = 3
143+ }
144+ if len (args ) < kpos {
145+ return args , nil
146+ }
147+ klen , err := parseLen (args [kpos ])
148+ if err != nil {
149+ return args , nil
150+ }
151+ for i := 3 ; i < 3 + klen ; i ++ {
138152 args [i ] = append (namespacePrefix , args [i ]... )
139153 }
140154 case ModifyScanStyle :
0 commit comments