You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by pq...@apache.org on 2008/11/09 20:00:34 UTC

svn commit: r712533 - /httpd/mod_wombat/trunk/mod_wombat.c

Author: pquerna
Date: Sun Nov  9 11:00:34 2008
New Revision: 712533

URL: http://svn.apache.org/viewvc?rev=712533&view=rev
Log:
Fix function based hooks, since I broken them with r712528.

Modified:
    httpd/mod_wombat/trunk/mod_wombat.c

Modified: httpd/mod_wombat/trunk/mod_wombat.c
URL: http://svn.apache.org/viewvc/httpd/mod_wombat/trunk/mod_wombat.c?rev=712533&r1=712532&r2=712533&view=diff
==============================================================================
--- httpd/mod_wombat/trunk/mod_wombat.c (original)
+++ httpd/mod_wombat/trunk/mod_wombat.c Sun Nov  9 11:00:34 2008
@@ -211,12 +211,28 @@
                 return 500;
             }
 
-            apw_run_wombat_request(L, r);
-            
-            if (hook_spec->function_name) {
+            if (hook_spec->function_name != NULL) {
+                /* 'eval' the base code */
+                if (lua_pcall(L, 0, LUA_MULTRET, 0)) {
+                    report_lua_error(L, r);
+                    return 500;
+                }
+            }
+
+            if (hook_spec->function_name != NULL) {
                 lua_getglobal(L, hook_spec->function_name);
+                if (!lua_isfunction(L, -1)) {
+                    ap_log_rerror(APLOG_MARK, APLOG_CRIT, 0, r, "wombat: Unable to find function %s in %s",
+                                  hook_spec->function_name,
+                                  hook_spec->file_name);
+                    return 500;
+                }
+
+                apw_run_wombat_request(L, r);
             }
             else {
+                apw_run_wombat_request(L, r);
+                
                 int t = lua_gettop(L);
                 lua_setglobal(L, "r");
                 lua_settop(L, t);