Hi, all
    Sorry for the delay, I have track down all patches base on my ChangeLog( I 
keep my mail archive), so here is my brief:
--------------------------------------------
the "Inside job"
  version 0.76 ( Jul 6th 2004 )
  1. Code fix. Replace the depreciated BRIGADE_FOREACH macro, which compile 
against httpd 2.1-Dev.
  (Patch by Paul Querna(chip at force-elite.com))
 
  Version2.1 ( Feb 15th 2007 )
  3. Bug fix. Authoritative flag reversed
  Thank Chris Darroch for the patch
-----------------------------------------------
Minor patches
...Ignore here, I attach a file to show every modification to every ChangeLog 
entry. (If anyone think any change is major, please let me know)
------------------------------------------------
Major patches
  version 1.10 ( Jul 3rd 2006 )
  1. Use poll() instead of select() in UNIX. It becomes problematic on apache2 
with large number of logfiles. Apache2 calls poll() (when OS supports it), and 
in that case it doesn't need to be recompiled with larger FD_SETSIZE. select() 
is still limited to FD_SETSIZE."(Thank Piotr Gackiewicz gacek at intertele.pl 
for the patch.)
  2. Bug fix: "Some requests fail with HTTP 500 and no errorlog entry is 
generated" (Thank Piotr Gackiewicz gacek at intertele.pl for the patch.)
 
  Version2.2 (Jul 31st 2007)
  3. Support configuration "TimeScore"
          Thank Tim Jensen for the patch.
  (This is a patch from sourceforge.net: 
https://sourceforge.net/tracker/download.php?group_id=174879&atid=870993&file_id=218023&aid=1670268,
 author is https://sourceforge.net/users/timjensen66/)


So, that mean there are other two people are involved.


Thanks


----- Original Message ----- 
From: "Chris Darroch" <chr...@pearsoncmg.com>
To: <dev@httpd.apache.org>
Sent: Thursday, December 18, 2008 1:20 PM
Subject: Re: mod_fcgid license questions


> William A. Rowe, Jr. wrote:
> 
>> How many are we talking about (in the significant category)?  The
>> easiest way probably depends on how many people, how easy they are
>> to contact, etc.
> 
>   Ryan, do you have a rough sense of this?
> 
>   From my own review of the ChangeLog, it looks like there are
> roughly about 10-12 major contributions by others (two of whom are
> httpd committers).  There are lots of additional people listed,
> but these seem to divide up between minor patch contributions,
> thanks for bug reports or for testing a bug fix, or thanks for
> suggesting a possible new feature.
> 
>   Clearly, though, we'll need Ryan to look through and identify
> the major contributors.
> 
> 
>> I'd prefer that we simply sponsor this effort under the httpd PMC here
>> at our project.
>> 
>> We have to file an IP code clearance through the Incubator, but that's
>> relatively simple (and a good part is finished already now that the
>> appropriate paperwork is filed with the secretary).
>> 
>> Does anyone feel that the addition of mod_fcgid should be driven through
>> the incubator?  Speaking first hand, it didn't resolve the shortcomings
>> of lack of community behind mod_aspdotnet, and didn't really give mod_ftp
>> the visibility it needed (and attracted once it graduated).  So for most
>> existing modules, I don't think it solves many of the problems we might
>> or might not face here at httpd.
> 
>   I really don't know all the options here, but from what you describe,
> it sounds like a faster track to get the IP code clearance done would
> be ideal, if possible.  So, a +1 from me if this is feasible.
> 
>   Thanks,
> 
> Chris.
> 
> -- 
> GPG Key ID: 366A375B
> GPG Key Fingerprint: 485E 5041 17E1 E2BB C263  E4DE C8E3 FA36 366A 375B
> 
>
------------------------------------------------------------------------------------------------------------------------------------------------------
  version 1.04 ( Dec 2nd 2004 )
  1. Bug fix. ap_scan_script_header_err_core can return non OK without errors.
  e.g. CGI outputs Last-Modified header and browser request with 
If-Mofieided-Since header, ap_scan_script_header_err_core() may returns 302(Not 
Modified)
  (Thank Tatsuki Sugiura, sugi at nemui.org for the bug fix patch)
--- fcgid_bridge.c.orig 2004-11-11 09:40:17.000000000 +0900
+++ fcgid_bridge.c 2004-11-11 09:41:30.000000000 +0900
@@ -217,7 +217,7 @@
  server_rec *main_server = r->server;
  fcgid_command fcgi_request;
  fcgid_bucket_ctx *bucket_ctx;
- int i, stopping;
+ int i, stopping, cond_status;
  apr_status_t rv;
  apr_bucket_brigade *brigade_stdout;
  char sbuf[MAX_STRING_LEN];
@@ -330,11 +330,10 @@
                 bucket_ctx));
  /*APR_BRIGADE_INSERT_TAIL(brigade_stdout, 
apr_bucket_flush_create(r->connection->bucket_alloc)); */
 
- /* Check the script header first */
- if (ap_scan_script_header_err_core
-  (r, sbuf, getsfunc_fcgid_BRIGADE, brigade_stdout) != OK) {
-  return HTTP_INTERNAL_SERVER_ERROR;
- }
+ /* Check the script header first. If got error, return immediately */
+ if ((cond_status = ap_scan_script_header_err_core
+  (r, sbuf, getsfunc_fcgid_BRIGADE, brigade_stdout)) >= 400)
+  return cond_status;
 
  /* Check redirect */
  location = apr_table_get(r->headers_out, "Location");
@@ -368,8 +367,8 @@
   return HTTP_INTERNAL_SERVER_ERROR;
  }
 
- /* OK now */
- return HTTP_OK;
+ /* Retrun condition status */
+ return cond_status;
 }
 
 int bridge_request(request_rec * r, const char *argv0,
 
------------------------------------------------------------------------------------------------------------------------------------------------------
  version 1.07 ( Nov 10th 2005 )
  3. Support Apache 2.1 now (Patch by nick at webthing.com)
  (Thank nick at webthing.com for the excellent patch)
diff -u --recursive mod_fcgid.1.06/arch/unix/fcgid_pm_unix.c 
mod_fcgid.new/arch/unix/fcgid_pm_unix.c
--- mod_fcgid.1.06/arch/unix/fcgid_pm_unix.c 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/arch/unix/fcgid_pm_unix.c 2005-11-07 15:53:36.332974591 +0000
@@ -4,10 +4,13 @@
 #include "apr_strings.h"
 #include "apr_queue.h"
 #include "apr_global_mutex.h"
+#include "apr_support.h"
 #include "fcgid_pm.h"
 #include "fcgid_pm_main.h"
 #include "fcgid_conf.h"
 #include "fcgid_proctbl.h"
+#include "fcgid_spawn_ctl.h"
+#include <unistd.h>
 static apr_status_t create_process_manager(server_rec * main_server,
              apr_pool_t * configpool);
 
@@ -20,7 +23,6 @@
 static apr_global_mutex_t *g_pipelock = NULL;
 char g_pipelock_name[L_tmpnam];
 
-static int g_nProcIdleTimeOut = 0;
 static int volatile g_caughtSigTerm = 0;
 static pid_t g_pm_pid;
 static void signal_handler(int signo)
@@ -42,7 +44,6 @@
 static apr_status_t init_signal(server_rec * main_server)
 {
  struct sigaction sa;
- apr_status_t rv;
 
  /* Setup handlers */
  sa.sa_handler = signal_handler;
@@ -52,21 +53,21 @@
  if (sigaction(SIGTERM, &sa, NULL) < 0) {
   ap_log_error(APLOG_MARK, APLOG_ERR, errno, main_server,
       "mod_fcgid: Can't install SIGTERM handler");
-  return errno;
+  return APR_EGENERAL;
  }
 
  /* Httpd restart */
  if (sigaction(SIGHUP, &sa, NULL) < 0) {
   ap_log_error(APLOG_MARK, APLOG_ERR, errno, main_server,
       "mod_fcgid: Can't install SIGHUP handler");
-  return errno;
+  return APR_EGENERAL;
  }
 
  /* Httpd graceful restart */
  if (sigaction(SIGUSR1, &sa, NULL) < 0) {
   ap_log_error(APLOG_MARK, APLOG_ERR, errno, main_server,
       "mod_fcgid: Can't install SIGUSR1 handler");
-  return errno;
+  return APR_EGENERAL;
  }
 
  /* Ignore SIGPIPE */
@@ -74,7 +75,7 @@
  if (sigaction(SIGPIPE, &sa, NULL) < 0) {
   ap_log_error(APLOG_MARK, APLOG_ERR, errno, main_server,
       "mod_fcgid: Can't install SIGPIPE handler");
-  return errno;
+  return APR_EGENERAL;
  }
 
  return APR_SUCCESS;
@@ -84,7 +85,6 @@
 {
  apr_proc_t *proc = data;
  int mpm_state;
- int stopping;
 
  switch (reason) {
  case APR_OC_REASON_DEATH:
@@ -391,7 +391,6 @@
 {
  apr_status_t rv;
  char notifybyte;
- ap_unix_identity_t *ugid;
  apr_size_t nbytes = sizeof(*command);
  server_rec *main_server = r->server;
 
diff -u --recursive mod_fcgid.1.06/arch/unix/fcgid_proc_unix.c 
mod_fcgid.new/arch/unix/fcgid_proc_unix.c
--- mod_fcgid.1.06/arch/unix/fcgid_proc_unix.c 2005-04-27 05:11:02.000000000 
+0100
+++ mod_fcgid.new/arch/unix/fcgid_proc_unix.c 2005-11-07 14:45:24.336989990 
+0000
@@ -1,3 +1,4 @@
+#include <unistd.h>
 #include <sys/un.h>
 #include <sys/types.h>
 #include <netinet/tcp.h>  /* For TCP_NODELAY */
@@ -18,6 +19,7 @@
 #include "fcgid_protocol.h"
 #include "fcgid_conf.h"
 #include "fcgid_pm.h"
+#include "fcgid_spawn_ctl.h"
 #define DEFAULT_FCGID_LISTENBACKLOG 5
 typedef struct {
  int handle_socket;
@@ -143,16 +145,14 @@
        fcgid_procnode * procnode)
 {
  server_rec *main_server = procinfo->main_server;
- apr_status_t rv;
+ apr_status_t rv = APR_SUCCESS;
  apr_file_t *file;
- int omask, retcode, unix_socket, i;
+ int omask, retcode, unix_socket;
  char **proc_environ;
  struct sockaddr_un unix_addr;
- fcgid_wrapper_conf *wrapper_conf;
  apr_procattr_t *procattr = NULL;
  char key_name[_POSIX_PATH_MAX];
- fcgid_ipc ipc_handle;
- char *dummy;
+ void *dummy;
  char *argv[2];
 
  /* Initialize the variables */
@@ -323,13 +323,13 @@
 
  /* Set the (deviceid, inode) -> fastcgi path map for log */
  apr_snprintf(key_name, _POSIX_PATH_MAX, "%lX%lX",
-     procnode->inode, procnode->deviceid);
+     procnode->inode, (unsigned long)procnode->deviceid);
  dummy = NULL;
  apr_pool_userdata_get((void **) &dummy, key_name, g_inode_cginame_map);
  if (!dummy) {
   /* Insert a new item if key not found */
   char *put_key = apr_psprintf(g_inode_cginame_map, "%lX%lX",
-          procnode->inode, procnode->deviceid);
+          procnode->inode, (unsigned long)procnode->deviceid);
   char *fcgipath = apr_psprintf(g_inode_cginame_map, "%s",
            procinfo->cgipath);
 
@@ -730,7 +730,7 @@
 
  /* Get the file name infomation base on inode and deviceid */
  apr_snprintf(key_name, _POSIX_PATH_MAX, "%lX%lX",
-     procnode->inode, procnode->deviceid);
+     procnode->inode, (unsigned long)procnode->deviceid);
  apr_pool_userdata_get((void **) &cgipath, key_name,
         g_inode_cginame_map);
 
diff -u --recursive mod_fcgid.1.06/arch/unix/fcgid_proctbl_unix.c 
mod_fcgid.new/arch/unix/fcgid_proctbl_unix.c
--- mod_fcgid.1.06/arch/unix/fcgid_proctbl_unix.c 2005-04-27 05:11:02.000000000 
+0100
+++ mod_fcgid.new/arch/unix/fcgid_proctbl_unix.c 2005-11-07 13:19:14.138621058 
+0000
@@ -2,6 +2,8 @@
 #include "apr_shm.h"
 #include "apr_global_mutex.h"
 #include "fcgid_global.h"
+#include "unixd.h"
+#include <unistd.h>
 
 static apr_shm_t *g_sharemem = NULL;
 static apr_global_mutex_t *g_sharelock = NULL;
@@ -29,7 +31,7 @@
         main_server->process->pconf)) != APR_SUCCESS)
  {
   ap_log_error(APLOG_MARK, APLOG_EMERG, rv, main_server,
-      "mod_fcgid: Can't create share memory for size %ld byte",
+      "mod_fcgid: Can't create share memory for size %d byte",
       shmem_size);
   exit(1);
  }
@@ -93,47 +95,47 @@
  return rv;
 }
 
-apr_status_t proctable_lock_table()
+apr_status_t proctable_lock_table(void)
 {
  return apr_global_mutex_lock(g_sharelock);
 }
 
-apr_status_t proctable_unlock_table()
+apr_status_t proctable_unlock_table(void)
 {
  return apr_global_mutex_unlock(g_sharelock);
 }
 
-fcgid_procnode *proctable_get_free_list()
+fcgid_procnode *proctable_get_free_list(void)
 {
  return g_free_list_header;
 }
 
-fcgid_procnode *proctable_get_busy_list()
+fcgid_procnode *proctable_get_busy_list(void)
 {
  return g_busy_list_header;
 }
 
-fcgid_procnode *proctable_get_idle_list()
+fcgid_procnode *proctable_get_idle_list(void)
 {
  return g_idle_list_header;
 }
 
-fcgid_procnode *proctable_get_table_array()
+fcgid_procnode *proctable_get_table_array(void)
 {
  return g_proc_array;
 }
 
-fcgid_procnode *proctable_get_error_list()
+fcgid_procnode *proctable_get_error_list(void)
 {
  return g_error_list_header;
 }
 
-fcgid_global_share *proctable_get_globalshare()
+fcgid_global_share *proctable_get_globalshare(void)
 {
  return g_global_share;
 }
 
-size_t proctable_get_table_size()
+size_t proctable_get_table_size(void)
 {
  return g_table_size;
 }
diff -u --recursive mod_fcgid.1.06/fcgid_bridge.c mod_fcgid.new/fcgid_bridge.c
--- mod_fcgid.1.06/fcgid_bridge.c 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/fcgid_bridge.c 2005-11-07 14:17:21.513618290 +0000
@@ -134,14 +134,12 @@
      In this case I will do nothing and return, let the process manager 
      do the job   
    */
-  if (apr_time_sec(apr_time_now()) -
-   apr_time_sec(ctx->active_time) > g_busy_timeout) {
+  int dt = apr_time_sec(apr_time_now()) - apr_time_sec(ctx->active_time);
+  if (dt > g_busy_timeout) {
    /* Do nothing but print log */
    ap_log_error(APLOG_MARK, APLOG_INFO, 0,
        main_server,
-       "mod_fcgid: process busy timeout, take %d seconds for this request",
-       apr_time_sec(apr_time_now()) -
-       apr_time_sec(ctx->active_time));
+       "mod_fcgid: process busy timeout, take %d seconds for this request", 
dt);
   } else if (ctx->has_error) {
    ctx->procnode->diewhy = FCGID_DIE_COMM_ERROR;
    return_procnode(main_server, ctx->procnode,
@@ -174,7 +172,7 @@
 
   rv = apr_bucket_read(e, &bucket_data, &bucket_data_len,
         APR_BLOCK_READ);
-  if (!APR_STATUS_IS_SUCCESS(rv)) {
+  if (rv != APR_SUCCESS) {
    return 0;
   }
 
@@ -370,7 +368,7 @@
 {
  apr_pool_t *request_pool = r->main ? r->main->pool : r->pool;
  server_rec *main_server = r->server;
- apr_status_t rv;
+ apr_status_t rv = APR_SUCCESS;
  int seen_eos;
  FCGI_Header *stdin_request_header;
  apr_bucket_brigade *output_brigade;
diff -u --recursive mod_fcgid.1.06/fcgid_bucket.h mod_fcgid.new/fcgid_bucket.h
--- mod_fcgid.1.06/fcgid_bucket.h 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/fcgid_bucket.h 2005-11-07 14:46:54.896811913 +0000
@@ -14,5 +14,6 @@
 extern const apr_bucket_type_t ap_bucket_type_fcgid_header;
 apr_bucket *ap_bucket_fcgid_header_create(apr_bucket_alloc_t * list,
             fcgid_bucket_ctx * ctx);
+apr_bucket *ap_bucket_fcgid_header_make(apr_bucket*, fcgid_bucket_ctx*);
 
 #endif
diff -u --recursive mod_fcgid.1.06/fcgid_pm.h mod_fcgid.new/fcgid_pm.h
--- mod_fcgid.1.06/fcgid_pm.h 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/fcgid_pm.h 2005-11-07 13:07:31.920069025 +0000
@@ -33,6 +33,6 @@
          apr_pool_t * pconf);
 
 apr_status_t procmgr_stop_procmgr(void *dummy);
-int procmgr_must_exit();
+int procmgr_must_exit(void);
 
 #endif
diff -u --recursive mod_fcgid.1.06/fcgid_pm_main.c mod_fcgid.new/fcgid_pm_main.c
--- mod_fcgid.1.06/fcgid_pm_main.c 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/fcgid_pm_main.c 2005-11-07 13:06:47.960922115 +0000
@@ -14,7 +14,7 @@
 static int g_error_scan_interval;
 static int g_zombie_scan_interval;
 
-static
+static void
 link_node_to_list(server_rec * main_server,
       fcgid_procnode * header,
       fcgid_procnode * node, fcgid_procnode * table_array)
@@ -246,7 +246,7 @@
     kill() and wait() every node in error list
     put them back to free list after that
   */
- char *dummy;
+ void *dummy;
  fcgid_procnode *previous_node, *current_node, *next_node;
  apr_time_t now = apr_time_now();
  fcgid_procnode *error_list_header = proctable_get_error_list();
@@ -293,7 +293,7 @@
    current_node = &proc_table[current_node->next_index]) {
   /* Try gracefully first */
   dummy = NULL;
-  apr_pool_userdata_get((void **) &dummy, HAS_GRACEFUL_KILL,
+  apr_pool_userdata_get(&dummy, HAS_GRACEFUL_KILL,
          current_node->proc_pool);
   if (!dummy) {
    proc_kill_gracefully(current_node, main_server);
diff -u --recursive mod_fcgid.1.06/fcgid_proctbl.h mod_fcgid.new/fcgid_proctbl.h
--- mod_fcgid.1.06/fcgid_proctbl.h 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/fcgid_proctbl.h 2005-11-07 12:49:33.755677907 +0000
@@ -56,16 +56,16 @@
 apr_status_t proctable_post_config(server_rec * main_server,
            apr_pool_t * pconf);
 
-apr_status_t proctable_lock_table();
-apr_status_t proctable_unlock_table();
+apr_status_t proctable_lock_table(void);
+apr_status_t proctable_unlock_table(void);
 
-fcgid_procnode *proctable_get_free_list();
-fcgid_procnode *proctable_get_busy_list();
-fcgid_procnode *proctable_get_idle_list();
-fcgid_procnode *proctable_get_error_list();
-fcgid_procnode *proctable_get_table_array();
-size_t proctable_get_table_size();
-fcgid_global_share *proctable_get_globalshare();
+fcgid_procnode *proctable_get_free_list(void);
+fcgid_procnode *proctable_get_busy_list(void);
+fcgid_procnode *proctable_get_idle_list(void);
+fcgid_procnode *proctable_get_error_list(void);
+fcgid_procnode *proctable_get_table_array(void);
+size_t proctable_get_table_size(void);
+fcgid_global_share *proctable_get_globalshare(void);
 
 void safe_lock(server_rec * main_server);
 void safe_unlock(server_rec * main_server);
diff -u --recursive mod_fcgid.1.06/mod_fcgid.c mod_fcgid.new/mod_fcgid.c
--- mod_fcgid.1.06/mod_fcgid.c 2005-04-27 05:11:02.000000000 +0100
+++ mod_fcgid.new/mod_fcgid.c 2005-11-07 14:50:39.625665185 +0000
@@ -182,14 +182,14 @@
 fcgid_init(apr_pool_t * config_pool, apr_pool_t * plog, apr_pool_t * ptemp,
      server_rec * main_server)
 {
- apr_proc_t *procnew = NULL;
+ apr_proc_t *procnew;
  const char *userdata_key = "fcgid_init";
  apr_status_t rv;
+ void *dummy = NULL;
 
  /* Initialize process manager only once */
- apr_pool_userdata_get((void **) &procnew, userdata_key,
-        main_server->process->pool);
- if (!procnew) {
+ apr_pool_userdata_get(&dummy, userdata_key, main_server->process->pool);
+ if (!dummy) {
   procnew =
    apr_pcalloc(main_server->process->pool, sizeof(*procnew));
   procnew->pid = -1;
@@ -199,6 +199,9 @@
          main_server->process->pool);
   return OK;
  }
+ else {
+  procnew = dummy;
+ }
 
  /* Initialize share memory and share lock */
  if ((rv =
------------------------------------------------------------------------------------------------------------------------------------------------------
 
  version 1.08 ( Jan 22nd 2006 )
  2. Wrapper binary can be stored in a different location to the web content 
(like /usr/local/apache2/fcgi-bin)
  (Patch from Stephen Grier, s.e.grier at qmul.ac.uk)
diff -Naur mod_fcgid.1.07.old/arch/unix/fcgid_proc_unix.c 
mod_fcgid.1.07/arch/unix/fcgid_proc_unix.c
--- mod_fcgid.1.07.old/arch/unix/fcgid_proc_unix.c 2005-11-15 
02:54:08.000000000 +0000
+++ mod_fcgid.1.07/arch/unix/fcgid_proc_unix.c 2006-01-18 14:01:19.693535715 
+0000
@@ -263,8 +263,7 @@
           NULL)) != APR_SUCCESS
 || (rv =
  apr_procattr_dir_set(procattr,
-       ap_make_dirstr_parent(procnode->proc_pool,
-              procinfo->cgipath))) !=
+       ap_make_dirstr_parent(procnode->proc_pool, (lpszwapper != NULL && 
lpszwapper[0] != '\0') ? lpszwapper : procinfo->cgipath))) !=
 APR_SUCCESS
 || (rv =
  apr_procattr_cmdtype_set(procattr, APR_PROGRAM)) != APR_SUCCESS
------------------------------------------------------------------------------------------------------------------------------------------------------
 
  3. Support Apache 2.2 now
  (Patch from RyoYazaki, yazaki.ryo at mind.co.jp, and many other people report 
the compiling problem)
*** fcgid_proc_unix.c.org       Thu Jan 12 01:29:15 2006
--- fcgid_proc_unix.c   Thu Jan 12 01:30:28 2006
***************
*** 20,25 ****
--- 20,26 ----
  #include "fcgid_conf.h"
  #include "fcgid_pm.h"
  #include "fcgid_spawn_ctl.h"
+ #include "mpm_common.h"
  #define DEFAULT_FCGID_LISTENBACKLOG 5
  typedef struct {
        int handle_socket;
------------------------------------------------------------------------------------------------------------------------------------------------------
 
  version 1.09 ( Apr 25th 2006 )
  3. Split error log whle '\r' or '\n' are inside the text send to "stderr". 
(Thank frederic at jolliton.com for the patch)
diff -u mod_fcgid.1.08.orig/fcgid_bucket.c mod_fcgid.1.08/fcgid_bucket.c
--- mod_fcgid.1.08.orig/fcgid_bucket.c 2006-01-22 15:16:41.000000000 +0100
+++ mod_fcgid.1.08/fcgid_bucket.c 2006-03-08 22:33:03.000000000 +0100
@@ -98,6 +98,7 @@
  /* Handle FCGI_STDERR body, write the content to log file */
  if (header.type == FCGI_STDERR) {
   char *logbuf = apr_bucket_alloc(APR_BUCKET_BUFF_SIZE, b->list);
+  char *line;
 
   if (!logbuf)
    return APR_ENOMEM;
@@ -127,8 +128,20 @@
   }
 
   /* Now I get the log data, write log and release the buffer */
-  ap_log_error(APLOG_MARK, APLOG_WARNING, 0, main_server,
-      "mod_fcgid: stderr: %s", logbuf);
+  line = logbuf;
+  while (*line) {
+   char* end = strpbrk(line, "\r\n");
+   if (end != NULL) {
+    *end = '\0';
+   }
+   ap_log_error(APLOG_MARK, APLOG_WARNING, 0, main_server,
+       "mod_fcgid: stderr: %s", line);
+   if (end == NULL) {
+    break;
+   }
+   ++end;
+   line = end+strspn(end, "\r\n");
+  }
   apr_bucket_free(logbuf);
  }
------------------------------------------------------------------------------------------------------------------------------------------------------
 
version 1.10 ( Jul 3rd 2006 )
  3. Use anonymouse share memeory to make OS X happy. (Thank andkjar at 
obtech.net for the patch.)
My solution follows:
around: arch/unix/fcgid_procbtl_unix.c:29
 
/* Create share memory */
if ((rv = apr_shm_create(&g_sharemem, shmem_size, NULL,
main_server->process->pconf)) != APR_SUCCESS)
{
ap_log_error(APLOG_MARK, APLOG_EMERG, rv, main_server,
"mod_fcgid: Can't create share memory for size %d byte",
shmem_size);
exit(1);
}
Note that I changed the 3rd parameter to the apr_shm_create call from 
tmpname(...) to NULL which in effect requests an anonymous shared memory 
segment, which apparently makes APR on OS X happy?
------------------------------------------------------------------------------------------------------------------------------------------------------
 
  version 2.0 ( Oct 29th 2006 )
  6. Apply patch from Scott Lamb, Fix mod_fcgid 1.10 warnings on x86_64
RCS file: /cvsroot/mod-fcgid/mod_fcgid/fcgid_bridge.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -r1.31 -r1.32
297,299c297,298
<               ap_log_error(APLOG_MARK, APLOG_WARNING, 0, r->server,
<                                        "mod_fcgid: apr_calloc of %d bytes 
failed in handle_request function",
<                                        sizeof(*bucket_ctx));
---
>               ap_log_error(APLOG_MARK, APLOG_WARNING, apr_get_os_error(), 
> r->server,
>                                        "mod_fcgid: apr_calloc bucket_ctx 
> failed in handle_request function");
RCS file: /cvsroot/mod-fcgid/mod_fcgid/fcgid_spawn_ctl.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -r1.11 -r1.12
35c35
<               return;
---
>               abort();
RCS file: /cvsroot/mod-fcgid/mod_fcgid/arch/unix/fcgid_proctbl_unix.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -r1.5 -r1.6
34c34
<                                        "mod_fcgid: Can't create share memory 
for size %d byte",
---
>                                        "mod_fcgid: Can't create share memory 
> for size %zu byte",
192c192
<                                        "mod_fcgid: idle node index: %d",
---
>                                        "mod_fcgid: idle node index: %td",
200c200
<                                        "mod_fcgid: busy node index: %d",
---
>                                        "mod_fcgid: busy node index: %td",
208c208
<                                        "mod_fcgid: error node index: %d",
---
>                                        "mod_fcgid: error node index: %td",
------------------------------------------------------------------------------------------------------------------------------------------------------
 
  Version2.1 ( Feb 15th 2007 )
  2. FCGIWrapper disallowed in .htaccess
  Thank Balinares for patch
RCS file: /cvsroot/mod-fcgid/mod_fcgid/fcgid_conf.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -r1.24 -r1.25
26c26
< #define DEFAULT_IPC_COMM_TIMEOUT 20
---
> #define DEFAULT_IPC_COMM_TIMEOUT 40
RCS file: /cvsroot/mod-fcgid/mod_fcgid/mod_fcgid.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -r1.22 -r1.23
561c561
<       AP_INIT_TAKE12("FCGIWrapper", set_wrapper_config, NULL, ACCESS_CONF,
---
>       AP_INIT_TAKE12("FCGIWrapper", set_wrapper_config, NULL, 
> RSRC_CONF|ACCESS_CONF|OR_FILEINFO,
571c571
<                                 ACCESS_CONF,
---
>                                 ACCESS_CONF|OR_FILEINFO,
574c574
<                                set_authenticator_authoritative, NULL, 
ACCESS_CONF,
---
>                                set_authenticator_authoritative, NULL, 
> ACCESS_CONF|OR_FILEINFO,
577c577
<                                 ACCESS_CONF,
---
>                                 ACCESS_CONF|OR_FILEINFO,
580c580
<                                set_authorizer_authoritative, NULL, 
ACCESS_CONF,
---
>                                set_authorizer_authoritative, NULL, 
> ACCESS_CONF|OR_FILEINFO,
583c583
<                                 ACCESS_CONF,
---
>                                 ACCESS_CONF|OR_FILEINFO,
586c586
<                                set_access_authoritative, NULL, ACCESS_CONF,
---
>                                set_access_authoritative, NULL, 
> ACCESS_CONF|OR_FILEINFO,

Reply via email to