[svn:mod_parrot] r409 - mod_parrot/trunk/src

[email protected] Mon, 4 Aug 2008 16:36:56 -0700 (PDT)
Newsgroups perl.cvs.mod_parrot
Message-ID <[email protected]>
Author: jhorwitz
Date: Mon Aug  4 16:36:55 2008
New Revision: 409

Modified:
   mod_parrot/trunk/src/mod_parrot.c
   mod_parrot/trunk/src/modparrot_config.c

Log:
fix context exhaustion in threaded mpms


Modified: mod_parrot/trunk/src/mod_parrot.c
==============================================================================
--- mod_parrot/trunk/src/mod_parrot.c	(original)
+++ mod_parrot/trunk/src/mod_parrot.c	Mon Aug  4 16:36:55 2008
@@ -982,6 +982,9 @@
             if (!(vscfg->option_flags & MP_OPT_TRACE_INIT)) {
                 Parrot_set_trace(vsctxp->interp, vscfg->trace_flags);
             }
+
+            /* clean up */
+            release_ctx(vsctxp);
         }
         else {
             if (vscfg->option_flags & MP_OPT_ENABLE) {
@@ -995,6 +998,7 @@
 
     /* if not our handler, return OK (open_logs must return OK) */
     if (!cfg->open_logs_handler) {
+        release_ctx(ctxp);
         return OK;
     }
 

Modified: mod_parrot/trunk/src/modparrot_config.c
==============================================================================
--- mod_parrot/trunk/src/modparrot_config.c	(original)
+++ mod_parrot/trunk/src/modparrot_config.c	Mon Aug  4 16:36:55 2008
@@ -306,6 +306,9 @@
     parse_handler(cmd->pool, handler, l);
     modparrot_load_file(ctxp->interp, cmd->server, l->hll, l->id);
 
+    /* clean up */
+    release_ctx(ctxp);
+
     return NULL;
 }
 
@@ -604,6 +607,7 @@
     set_mp_config_vectors(ctxp, cmd);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 1, arg);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -619,6 +623,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 2, arg1, arg2);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -634,6 +639,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 2, arg1, arg2);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -650,6 +656,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -666,6 +673,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -682,6 +690,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 3, arg1, arg2, arg3);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -696,6 +705,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 1, arg);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -708,6 +718,7 @@
 
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "II", arg);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -722,6 +733,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 1, arg);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -737,6 +749,7 @@
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     args = make_cmd_args_array(ctxp->interp, cmd->pool, 2, arg1, arg2);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "IP", args);
+    release_ctx(ctxp);
     return NULL;
 }
 
@@ -748,5 +761,6 @@
 
     ctxp = modparrot_startup(cmd->pool, cmd->server, NULL);
     ret = Parrot_call_sub_ret_int(ctxp->interp, data->func, "I");
+    release_ctx(ctxp);
     return NULL;
 }