tune.lua.openlibs string,math,table,utf8 # safe subset, no I/O or OS
tune.lua.openlibs all # default, load everything
- This setting must be set before any "lua-load" or "lua-load-per-thread"
- directive, otherwise a parse error is returned.
+ This setting must be set before any "lua-load", "lua-load-per-thread" or
+ "lua-prepend-path" directive, otherwise a parse error is returned.
tune.lua.service-timeout <timeout>
This is the execution timeout for the Lua services. This is useful for
return -1;
}
+ /* Reject a non-default restriction if the Lua VM is already initialised,
+ * which happens when lua-load, lua-load-per-thread or lua-prepend-path
+ * appeared before this directive.
+ */
+ if (flags != HLUA_OPENLIBS_ALL && hlua_states[0]) {
+ memprintf(err, "'%s' must appear before any 'lua-load', 'lua-load-per-thread' or 'lua-prepend-path' directive",
+ args[0]);
+ return -1;
+ }
+
hlua_openlibs_flags = flags;
return 0;
}
return -1;
}
+ hlua_init();
+
/* loading for global state */
hlua_state_id = 0;
ha_set_thread(NULL);
return -1;
}
+ hlua_init();
+
if (per_thread_load == NULL) {
/* allocate the first entry large enough to store the final NULL */
per_thread_load = calloc(1, sizeof(*per_thread_load));
struct prepend_path *p = NULL;
size_t i;
+ hlua_init();
+
if (too_many_args(2, args, err, NULL)) {
goto err;
}
hlua_body = 0;
+ /* Ensure the Lua VM is initialised even if no Lua directive appeared
+ * in the configuration (e.g. no global section at all).
+ */
+ hlua_init();
+
#if defined(USE_OPENSSL)
/* Initialize SSL server. */
if (socket_ssl->xprt->prepare_srv) {
};
#endif
+ if (hlua_states[0])
+ return; /* already initialised */
+
/* Init post init function list head */
for (i = 0; i < MAX_THREADS + 1; i++)
LIST_INIT(&hlua_init_functions[i]);