On Tuesday 22 September 2009 10:39:32 am Jeff Trawick wrote:
> On Tue, Sep 22, 2009 at 12:04 PM, Ricardo Cantu <rica...@smartcsc.com>wrote:
> > I think this patch will do it. See what you think.
> 
> Thanks!  I think just a couple of tweaks are needed.
> 
> Values of -1 for max_requests_per_process need to be fixed at config time
>  so that we don't clutter the main logic with migration support.  The
>  function that handles parsing that directive is
>  set_max_requests_per_process() in fcgid_conf.c.  
Done.

>  Also in that file,  DEFAULT_MAX_REQUESTS_PER_PROCESS needs to be 0 instead  
> of -1.  
Done.

>  Then, the  check 
> +        } else if (sconf->max_requests_per_process > 0    // negative and
> zero are unlimited
> doesn't have to be handled differently than the others.
Done.

> 
> (BTW, it is a tiny bit helpful to omit generated .html.* from patches.)
> 
Sorry, will do.


Index: modules/fcgid/fcgid_pm_main.c
===================================================================
--- modules/fcgid/fcgid_pm_main.c	(revision 817674)
+++ modules/fcgid/fcgid_pm_main.c	(working copy)
@@ -59,7 +59,8 @@
     /* Should I check the idle list now? */
     if (procmgr_must_exit()
         || apr_time_sec(now) - apr_time_sec(lastidlescan) <=
-        sconf->idle_scan_interval)
+        sconf->idle_scan_interval
+        || (!sconf->idle_timeout && !sconf->proc_lifetime))
         return;
     lastidlescan = now;
 
@@ -74,17 +75,17 @@
         next_node = &proc_table[current_node->next_index];
         last_active_time = current_node->last_active_time;
         start_time = current_node->start_time;
-        if ((apr_time_sec(now) - apr_time_sec(last_active_time) >
-             sconf->idle_timeout
-             || apr_time_sec(now) - apr_time_sec(start_time) >
-             sconf->proc_lifetime)
+        if (((sconf->idle_timeout && (apr_time_sec(now) - apr_time_sec(last_active_time) >
+              sconf->idle_timeout))
+             || (sconf->proc_lifetime && (apr_time_sec(now) - apr_time_sec(start_time) >
+              sconf->proc_lifetime)))
             && is_kill_allowed(main_server, current_node)) {
             /* Set die reason for log */
-            if (apr_time_sec(now) - apr_time_sec(last_active_time) >
-                sconf->idle_timeout)
+            if (sconf->idle_timeout && (apr_time_sec(now) - apr_time_sec(last_active_time) >
+                     sconf->idle_timeout))
                 current_node->diewhy = FCGID_DIE_IDLE_TIMEOUT;
-            else if (apr_time_sec(now) - apr_time_sec(start_time) >
-                     sconf->proc_lifetime)
+            else if (sconf->proc_lifetime && (apr_time_sec(now) - apr_time_sec(start_time) >
+                     sconf->proc_lifetime))
                 current_node->diewhy = FCGID_DIE_LIFETIME_EXPIRED;
 
             /* Unlink from idle list */
Index: modules/fcgid/fcgid_conf.c
===================================================================
--- modules/fcgid/fcgid_conf.c	(revision 817674)
+++ modules/fcgid/fcgid_conf.c	(working copy)
@@ -47,7 +47,7 @@
 #define DEFAULT_IPC_CONNECT_TIMEOUT 3
 #define DEFAULT_IPC_COMM_TIMEOUT 40
 #define DEFAULT_OUTPUT_BUFFERSIZE 65536
-#define DEFAULT_MAX_REQUESTS_PER_PROCESS -1
+#define DEFAULT_MAX_REQUESTS_PER_PROCESS 0
 #define DEFAULT_MAX_REQUEST_LEN (1024*1024*1024)    /* 1G */
 #define DEFAULT_MAX_MEM_REQUEST_LEN (1024*64)   /* 64k */
 #define DEFAULT_WRAPPER_KEY "ALL"
@@ -472,7 +472,9 @@
     server_rec *s = cmd->server;
     fcgid_server_conf *config =
         ap_get_module_config(s->module_config, &fcgid_module);
-    config->max_requests_per_process = atol(arg);
+    if ((config->max_requests_per_process = atol(arg)) == -1) {
+      config->max_requests_per_process = 0;
+     }
     config->max_requests_per_process_set = 1;
     return NULL;
 }
Index: modules/fcgid/fcgid_bridge.c
===================================================================
--- modules/fcgid/fcgid_bridge.c	(revision 817674)
+++ modules/fcgid/fcgid_bridge.c	(working copy)
@@ -193,7 +193,7 @@
             ctx->procnode->diewhy = FCGID_DIE_COMM_ERROR;
             return_procnode(s, ctx->procnode,
                             1 /* communication error */ );
-        } else if (sconf->max_requests_per_process != -1
+        } else if (sconf->max_requests_per_process
                    && ++ctx->procnode->requests_handled >=
                    sconf->max_requests_per_process) {
             ctx->procnode->diewhy = FCGID_DIE_LIFETIME_EXPIRED;

Reply via email to