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:
Thierry Fournier 2016-02-19 20:53:30 +01:00 committed by Willy Tarreau
parent fd107a2b1c
commit 3d4a675f24
3 changed files with 18 additions and 0 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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))