MINOR: lua: Make `set_var()` and `unset_var()` return success
This patch makes `set_var()` and `unset_var()` return a boolean indicating success.
This commit is contained in:
parent
b4fac1eb3c
commit
84ebc136a1
|
@ -0,0 +1,12 @@
|
||||||
|
core.register_service("set_var", "http", function(applet)
|
||||||
|
local var_name = applet.headers["var"][0]
|
||||||
|
local result = applet:set_var(var_name, "value")
|
||||||
|
if result then
|
||||||
|
applet:set_status(202)
|
||||||
|
else
|
||||||
|
applet:set_status(400)
|
||||||
|
end
|
||||||
|
applet:add_header("echo", applet:get_var(var_name) or "(nil)")
|
||||||
|
applet:start_response()
|
||||||
|
applet:send("")
|
||||||
|
end)
|
|
@ -0,0 +1,29 @@
|
||||||
|
varnishtest "Lua: set_var"
|
||||||
|
#REQUIRE_OPTIONS=LUA
|
||||||
|
|
||||||
|
feature ignore_unknown_macro
|
||||||
|
|
||||||
|
haproxy h1 -conf {
|
||||||
|
global
|
||||||
|
lua-load ${testdir}/set_var.lua
|
||||||
|
|
||||||
|
frontend fe1
|
||||||
|
mode http
|
||||||
|
${no-htx} option http-use-htx
|
||||||
|
bind "fd@${fe1}"
|
||||||
|
|
||||||
|
http-request use-service lua.set_var
|
||||||
|
} -start
|
||||||
|
|
||||||
|
client c0 -connect ${h1_fe1_sock} {
|
||||||
|
txreq -url "/" \
|
||||||
|
-hdr "Var: txn.foo"
|
||||||
|
rxresp
|
||||||
|
expect resp.status == 202
|
||||||
|
expect resp.http.echo == "value"
|
||||||
|
txreq -url "/" \
|
||||||
|
-hdr "Var: invalid.var"
|
||||||
|
rxresp
|
||||||
|
expect resp.status == 400
|
||||||
|
expect resp.http.echo == "(nil)"
|
||||||
|
} -run
|
24
src/hlua.c
24
src/hlua.c
|
@ -3489,8 +3489,8 @@ __LJMP static int hlua_applet_tcp_set_var(lua_State *L)
|
||||||
|
|
||||||
/* Store the sample in a variable. */
|
/* Store the sample in a variable. */
|
||||||
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
||||||
vars_set_by_name(name, len, &smp);
|
lua_pushboolean(L, vars_set_by_name(name, len, &smp) != 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__LJMP static int hlua_applet_tcp_unset_var(lua_State *L)
|
__LJMP static int hlua_applet_tcp_unset_var(lua_State *L)
|
||||||
|
@ -3512,8 +3512,8 @@ __LJMP static int hlua_applet_tcp_unset_var(lua_State *L)
|
||||||
|
|
||||||
/* Unset the variable. */
|
/* Unset the variable. */
|
||||||
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
||||||
vars_unset_by_name_ifexist(name, len, &smp);
|
lua_pushboolean(L, vars_unset_by_name_ifexist(name, len, &smp) != 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__LJMP static int hlua_applet_tcp_get_var(lua_State *L)
|
__LJMP static int hlua_applet_tcp_get_var(lua_State *L)
|
||||||
|
@ -3967,8 +3967,8 @@ __LJMP static int hlua_applet_http_set_var(lua_State *L)
|
||||||
|
|
||||||
/* Store the sample in a variable. */
|
/* Store the sample in a variable. */
|
||||||
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
||||||
vars_set_by_name(name, len, &smp);
|
lua_pushboolean(L, vars_set_by_name(name, len, &smp) != 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__LJMP static int hlua_applet_http_unset_var(lua_State *L)
|
__LJMP static int hlua_applet_http_unset_var(lua_State *L)
|
||||||
|
@ -3990,8 +3990,8 @@ __LJMP static int hlua_applet_http_unset_var(lua_State *L)
|
||||||
|
|
||||||
/* Unset the variable. */
|
/* Unset the variable. */
|
||||||
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
smp_set_owner(&smp, s->be, s->sess, s, 0);
|
||||||
vars_unset_by_name_ifexist(name, len, &smp);
|
lua_pushboolean(L, vars_unset_by_name_ifexist(name, len, &smp) != 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__LJMP static int hlua_applet_http_get_var(lua_State *L)
|
__LJMP static int hlua_applet_http_get_var(lua_State *L)
|
||||||
|
@ -5053,8 +5053,8 @@ __LJMP static int hlua_set_var(lua_State *L)
|
||||||
|
|
||||||
/* Store the sample in a variable. */
|
/* Store the sample in a variable. */
|
||||||
smp_set_owner(&smp, htxn->p, htxn->s->sess, htxn->s, htxn->dir & SMP_OPT_DIR);
|
smp_set_owner(&smp, htxn->p, htxn->s->sess, htxn->s, htxn->dir & SMP_OPT_DIR);
|
||||||
vars_set_by_name(name, len, &smp);
|
lua_pushboolean(L, vars_set_by_name(name, len, &smp) != 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__LJMP static int hlua_unset_var(lua_State *L)
|
__LJMP static int hlua_unset_var(lua_State *L)
|
||||||
|
@ -5074,8 +5074,8 @@ __LJMP static int hlua_unset_var(lua_State *L)
|
||||||
|
|
||||||
/* Unset the variable. */
|
/* Unset the variable. */
|
||||||
smp_set_owner(&smp, htxn->p, htxn->s->sess, htxn->s, htxn->dir & SMP_OPT_DIR);
|
smp_set_owner(&smp, htxn->p, htxn->s->sess, htxn->s, htxn->dir & SMP_OPT_DIR);
|
||||||
vars_unset_by_name_ifexist(name, len, &smp);
|
lua_pushboolean(L, vars_unset_by_name_ifexist(name, len, &smp) != 0);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
__LJMP static int hlua_get_var(lua_State *L)
|
__LJMP static int hlua_get_var(lua_State *L)
|
||||||
|
|
Loading…
Reference in New Issue