From: Rainer Jung Date: Fri, 11 Nov 2011 20:22:08 +0000 (+0000) Subject: Use the right lua scope when used as a hook. X-Git-Tag: 2.5.0-alpha~7921 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=24b66f8823ef2eb569c77a9817ea6c22e95f757c;p=apache Use the right lua scope when used as a hook. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1201042 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/lua/mod_lua.c b/modules/lua/mod_lua.c index b27006c377..a248e95d7d 100644 --- a/modules/lua/mod_lua.c +++ b/modules/lua/mod_lua.c @@ -168,6 +168,7 @@ static int lua_handler(request_rec *r) static int lua_request_rec_hook_harness(request_rec *r, const char *name, int apr_hook_when) { int rc; + apr_pool_t *pool; lua_State *L; ap_lua_vm_spec *spec; ap_lua_server_cfg *server_cfg = ap_get_module_config(r->server->module_config, @@ -200,7 +201,31 @@ static int lua_request_rec_hook_harness(request_rec *r, const char *name, int ap apr_filepath_merge(&spec->file, server_cfg->root_path, spec->file, APR_FILEPATH_NOTRELATIVE, r->pool); - L = ap_lua_get_lua_state(r->pool, spec); + + ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, + "request details scope:%u, filename:%s, function:%s", + spec->scope, + spec->file, + hook_spec->function_name ? hook_spec->function_name : "-"); + + switch (spec->scope) { + case AP_LUA_SCOPE_ONCE: + apr_pool_create(&pool, r->pool); + break; + case AP_LUA_SCOPE_REQUEST: + pool = r->pool; + break; + case AP_LUA_SCOPE_CONN: + pool = r->connection->pool; + break; + case AP_LUA_SCOPE_THREAD: + #if APR_HAS_THREADS + pool = apr_thread_pool_get(r->connection->current_thread); + break; + #endif + } + + L = ap_lua_get_lua_state(pool, spec); if (!L) { ap_log_rerror(APLOG_MARK, APLOG_CRIT, 0, r,