mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-05 04:56:10 +02:00
MINOR: lua: post initialization
This patch adds a Lua post initialisation wrapper. It already exists for pure Lua function, now it executes also C. It is useful for doing things when the configuration is ready to use. For example we can can browse and register all the proxies.
This commit is contained in:
parent
fd107a2b1c
commit
3d4a675f24
@ -6,6 +6,7 @@ void hlua_class_const_str(lua_State *L, const char *name, const char *value);
|
||||
void hlua_class_function(lua_State *L, const char *name, int (*function)(lua_State *L));
|
||||
void *hlua_checkudata(lua_State *L, int ud, int class_ref);
|
||||
int hlua_register_metatable(struct lua_State *L, char *name);
|
||||
int hlua_fcn_post_init(lua_State *L);
|
||||
int hlua_fcn_reg_core_fcn(lua_State *L);
|
||||
int hlua_dump_object(lua_State *L);
|
||||
|
||||
|
||||
12
src/hlua.c
12
src/hlua.c
@ -6444,6 +6444,18 @@ int hlua_post_init()
|
||||
enum hlua_exec ret;
|
||||
const char *error;
|
||||
|
||||
/* Call post initialisation function in safe environement. */
|
||||
if (!SET_SAFE_LJMP(gL.T)) {
|
||||
if (lua_type(gL.T, -1) == LUA_TSTRING)
|
||||
error = lua_tostring(gL.T, -1);
|
||||
else
|
||||
error = "critical error";
|
||||
fprintf(stderr, "Lua post-init: %s.\n", error);
|
||||
exit(1);
|
||||
}
|
||||
hlua_fcn_post_init(gL.T);
|
||||
RESET_SAFE_LJMP(gL.T);
|
||||
|
||||
list_for_each_entry(init, &hlua_init_functions, l) {
|
||||
lua_rawgeti(gL.T, LUA_REGISTRYINDEX, init->function_ref);
|
||||
ret = hlua_ctx_resume(&gL, 0);
|
||||
|
||||
@ -313,6 +313,11 @@ static int hlua_concat_init(lua_State *L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int hlua_fcn_post_init(lua_State *L)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
int hlua_fcn_reg_core_fcn(lua_State *L)
|
||||
{
|
||||
if (!hlua_concat_init(L))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user