From: Brian McCallister Date: Fri, 11 Nov 2011 00:16:56 +0000 (+0000) Subject: replace server scope with thread scope X-Git-Tag: 2.5.0-alpha~7939 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bc7ecfdcf9bb935df930402c18123745de5aa9b9;p=thirdparty%2Fapache%2Fhttpd.git replace server scope with thread scope git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1200656 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/lua/mod_lua.c b/modules/lua/mod_lua.c index 6458476c34f..06479684bf3 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) {