From bc7ecfdcf9bb935df930402c18123745de5aa9b9 Mon Sep 17 00:00:00 2001 From: Brian McCallister Date: Fri, 11 Nov 2011 00:16:56 +0000 Subject: [PATCH] replace server scope with thread scope git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1200656 13f79535-47bb-0310-9956-ffa450edef68 --- modules/lua/mod_lua.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/modules/lua/mod_lua.c b/modules/lua/mod_lua.c index 6458476c34..06479684bf 100644 --- a/modules/lua/mod_lua.c +++ b/modules/lua/mod_lua.c @@ -25,6 +25,10 @@ #include "apr_optional.h" #include "mod_ssl.h" +#ifdef APR_HAS_THREADS +#include "apr_thread_proc.h" +#endif + APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ap_lua, AP_LUA, int, lua_open, (lua_State *L, apr_pool_t *p), (L, p), OK, DECLINED) @@ -112,7 +116,26 @@ static int lua_handler(request_rec *r) spec->scope, spec->file, "handle"); - L = ap_lua_get_lua_state(r->pool, + + apr_pool_t *pool; + switch (dcfg->vm_scope) { + case AP_LUA_SCOPE_ONCE: + 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) { -- 2.40.0