@@ -88,22 +88,21 @@ func (m *Miniredis) runLuaScript(c *server.Peer, sha, script string, readOnly bo
8888 l .SetGlobal ("ARGV" , argvTable )
8989
9090 redisFuncs , redisConstants := mkLua (m .srv , c , sha , readOnly )
91- // Register command handlers
92- l .Push (l .NewFunction (func (l * lua.LState ) int {
93- mod := l .RegisterModule ("redis" , redisFuncs ).(* lua.LTable )
94- for k , v := range redisConstants {
95- mod .RawSetString (k , v )
96- }
97- l .Push (mod )
98- return 1
99- }))
91+ redisMod := l .CreateTable (0 , len (redisFuncs )+ len (redisConstants ))
92+ for fname , fn := range redisFuncs {
93+ redisMod .RawSetString (fname , l .NewFunction (fn ))
94+ }
95+ for k , v := range redisConstants {
96+ redisMod .RawSetString (k , v )
97+ }
98+ for _ , name := range []string {"redis" , "server" } {
99+ l .SetGlobal (name , redisMod )
100+ }
101+
100102 l .RegisterModule ("os" , mkLuaOS ())
101103
102104 _ = doScript (l , protectGlobals )
103105
104- l .Push (lua .LString ("redis" ))
105- l .Call (1 , 0 )
106-
107106 // lua can call redis.setresp(...), but it's tmp state.
108107 oldresp := c .Resp3
109108 if err := doScript (l , script ); err != nil {
0 commit comments