]> granicus.if.org Git - apache/commitdiff
replace server scope with thread scope
authorBrian McCallister <brianm@apache.org>
Fri, 11 Nov 2011 00:16:56 +0000 (00:16 +0000)
committerBrian McCallister <brianm@apache.org>
Fri, 11 Nov 2011 00:16:56 +0000 (00:16 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1200656 13f79535-47bb-0310-9956-ffa450edef68

modules/lua/mod_lua.c

index 6458476c34f7ab3f55c102530820cf02b69a5521..06479684bf3785693ab26f8833eeda62875c10a9 100644 (file)
 #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) {