httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jos Backus <j...@cncdsl.com>
Subject Re: Running Apache in the foreground
Date Tue, 08 Jan 2002 07:40:15 GMT
On Mon, Jan 07, 2002 at 10:54:48PM -0800, Justin Erenkrantz wrote:
> Precisely my thoughts.  IMHO, split it out.  (The name is a bit
> iffy, but we can work on that...)  -- justin

Suggestions for a better name welcome :) Patch below.

Btw, it appears that the current code in CVS does not build on FreeBSD
-current:

/bin/sh /home/jos/src/apache2/httpd-2.0/srclib/apr/libtool --silent --mode=compile gcc -g
-O2   -DHAVE_CONFIG_H -D_REENTRANT -D_THREAD_SAFE   -I/home/jos/src/apache2/httpd-2.0/srclib/apr-util/include
-I/home/jos/src/apache2/httpd-2.0/srclib/apr-util/include -I/home/jos/src/apache2/httpd-2.0/srclib/apr/include
 -c apr_rmm.c && touch apr_rmm.lo
In file included from /home/jos/src/apache2/httpd-2.0/srclib/apr-util/include/apr_rmm.h:71,
                 from apr_rmm.c:56:
/home/jos/src/apache2/httpd-2.0/srclib/apr-util/include/apr_anylock.h:76: syntax error before
`apr_thread_mutex_t'
apr_rmm.c: In function `apr_rmm_init':
apr_rmm.c:216: union has no member named `rw'
apr_rmm.c:219: union has no member named `tm'
apr_rmm.c:219: union has no member named `rw'
apr_rmm.c:219: union has no member named `rw'
apr_rmm.c:238: union has no member named `tm'
apr_rmm.c:238: union has no member named `rw'
apr_rmm.c: In function `apr_rmm_destroy':
apr_rmm.c:247: union has no member named `tm'
apr_rmm.c:247: union has no member named `rw'
apr_rmm.c:247: union has no member named `rw'
apr_rmm.c:272: union has no member named `tm'
apr_rmm.c:272: union has no member named `rw'
apr_rmm.c: In function `apr_rmm_attach':
apr_rmm.c:283: union has no member named `rw'
apr_rmm.c: In function `apr_rmm_malloc':
apr_rmm.c:307: union has no member named `tm'
apr_rmm.c:307: union has no member named `rw'
apr_rmm.c:307: union has no member named `rw'
apr_rmm.c:317: union has no member named `tm'
apr_rmm.c:317: union has no member named `rw'
apr_rmm.c: In function `apr_rmm_calloc':
apr_rmm.c:326: union has no member named `tm'
apr_rmm.c:326: union has no member named `rw'
apr_rmm.c:326: union has no member named `rw'
apr_rmm.c:337: union has no member named `tm'
apr_rmm.c:337: union has no member named `rw'
apr_rmm.c: In function `apr_rmm_free':
apr_rmm.c:357: union has no member named `tm'
apr_rmm.c:357: union has no member named `rw'
apr_rmm.c:357: union has no member named `rw'
apr_rmm.c:363: union has no member named `tm'
apr_rmm.c:363: union has no member named `rw'
apr_rmm.c:369: union has no member named `tm'
apr_rmm.c:369: union has no member named `rw'
apr_rmm.c:377: union has no member named `tm'
apr_rmm.c:377: union has no member named `rw'
apr_rmm.c:386: union has no member named `tm'
apr_rmm.c:386: union has no member named `rw'
*** Error code 1

Stop in /home/jos/src/apache2/httpd-2.0/srclib/apr-util/misc.
*** Error code 1

Stop in /home/jos/src/apache2/httpd-2.0/srclib/apr-util/misc.
*** Error code 1

Stop in /home/jos/src/apache2/httpd-2.0/srclib/apr-util.
*** Error code 1

Stop in /home/jos/src/apache2/httpd-2.0/srclib.
*** Error code 1

Stop in /home/jos/src/apache2/httpd-2.0.


Index: server/mpm/beos/beos.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/beos/beos.c,v
retrieving revision 1.75
diff -u -r1.75 beos.c
--- server/mpm/beos/beos.c	29 Dec 2001 23:16:23 -0000	1.75
+++ server/mpm/beos/beos.c	8 Jan 2002 07:36:34 -0000
@@ -1009,8 +1009,11 @@
     if (restart_num++ == 1) {
         is_graceful = 0;
         
-        if (!one_process && !no_detach)
-	        apr_proc_detach();
+        if (!one_process)
+	    if (no_detach)
+		apr_proc_new_sessid();
+	    else
+		apr_proc_detach();
 
         server_pid = getpid();
     }
Index: server/mpm/perchild/perchild.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/perchild/perchild.c,v
retrieving revision 1.97
diff -u -r1.97 perchild.c
--- server/mpm/perchild/perchild.c	29 Dec 2001 23:16:23 -0000	1.97
+++ server/mpm/perchild/perchild.c	8 Jan 2002 07:36:36 -0000
@@ -1433,9 +1433,8 @@
 
     debug = ap_exists_config_define("DEBUG");
 
-    if (debug) {
+    if (debug)
         no_detach = one_process = 1;
-    }
     else {
         one_process = ap_exists_config_define("ONE_PROCESS");
         no_detach = ap_exists_config_define("NO_DETACH");
@@ -1445,9 +1444,11 @@
     if (restart_num++ == 1) {
         is_graceful = 0;
 
-        if (!one_process && !no_detach) {
-            apr_proc_detach();
-        }
+        if (!one_process)
+	    if (no_detach)
+		apr_proc_new_sessid();
+	    else
+		apr_proc_detach();
 
         my_pid = getpid();
     }
Index: server/mpm/prefork/prefork.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/prefork/prefork.c,v
retrieving revision 1.227
diff -u -r1.227 prefork.c
--- server/mpm/prefork/prefork.c	29 Dec 2001 23:16:24 -0000	1.227
+++ server/mpm/prefork/prefork.c	8 Jan 2002 07:36:37 -0000
@@ -1216,9 +1216,11 @@
     if (restart_num++ == 1) {
 	is_graceful = 0;
 
-	if (!one_process && !no_detach) {
-	    apr_proc_detach();
-	}
+	if (!one_process)
+	    if (no_detach)
+		apr_proc_new_sessid();
+	    else
+		apr_proc_detach();
 
 	parent_pid = ap_my_pid = getpid();
     }
Index: server/mpm/worker/worker.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/worker/worker.c,v
retrieving revision 1.58
diff -u -r1.58 worker.c
--- server/mpm/worker/worker.c	29 Dec 2001 23:16:24 -0000	1.58
+++ server/mpm/worker/worker.c	8 Jan 2002 07:36:39 -0000
@@ -1596,9 +1596,12 @@
     if (restart_num++ == 1) {
         is_graceful = 0;
 
-        if (!one_process && !no_detach) {
-            apr_proc_detach();
-        }
+        if (!one_process)
+	    if (no_detach)
+		apr_proc_new_sessid();
+	    else
+		apr_proc_detach();
+
         parent_pid = ap_my_pid = getpid();
     }
 
Index: srclib/apr/include/apr_thread_proc.h
===================================================================
RCS file: /home/cvspublic/apr/include/apr_thread_proc.h,v
retrieving revision 1.78
diff -u -r1.78 apr_thread_proc.h
--- srclib/apr/include/apr_thread_proc.h	27 Dec 2001 17:02:59 -0000	1.78
+++ srclib/apr/include/apr_thread_proc.h	8 Jan 2002 07:36:40 -0000
@@ -550,6 +550,11 @@
                                                   apr_pool_t *p);
 
 /**
+ * Put the process in its own process group.
+ */
+APR_DECLARE(apr_status_t) apr_proc_new_sessid(void);
+
+/**
  * Detach the process from the controlling terminal.
  */
 APR_DECLARE(apr_status_t) apr_proc_detach(void);
Index: srclib/apr/threadproc/netware/procsup.c
===================================================================
RCS file: /home/cvspublic/apr/threadproc/netware/procsup.c,v
retrieving revision 1.1
diff -u -r1.1 procsup.c
--- srclib/apr/threadproc/netware/procsup.c	2 Aug 2001 20:29:14 -0000	1.1
+++ srclib/apr/threadproc/netware/procsup.c	8 Jan 2002 07:36:40 -0000
@@ -54,25 +54,11 @@
 
 #include "threadproc.h"
 
-apr_status_t apr_proc_detach(void)
+apr_status_t apr_proc_new_sessid(void)
 {
 #if 0
-    int x;
     pid_t pgrp;
 
-    chdir("/");
-#if !defined(MPE) && !defined(OS2) && !defined(TPF) && !defined(BEOS)
-/* Don't detach for MPE because child processes can't survive the death of
-   the parent. */
-    if ((x = fork()) > 0)
-        exit(0);
-    else if (x == -1) {
-        perror("fork");
-        fprintf(stderr, "unable to fork new process\n");
-        exit(1);  /* we can't do anything here, so just exit. */
-    }
-/*    RAISE_SIGSTOP(DETACH);*/
-#endif
 #if APR_HAVE_SETSID
     if ((pgrp = setsid()) == -1) {
         return errno;
@@ -90,6 +76,31 @@
 #else
     if ((pgrp = setpgid(0, 0)) == -1) {
         return errno;
+    }
+#endif
+
+    return APR_SUCCESS;
+}
+apr_status_t apr_proc_detach(void)
+{
+#if 0
+    int x;
+
+    chdir("/");
+#if !defined(MPE) && !defined(OS2) && !defined(TPF) && !defined(BEOS)
+/* Don't detach for MPE because child processes can't survive the death of
+   the parent. */
+    if ((x = fork()) > 0)
+        exit(0);
+    else if (x == -1) {
+        perror("fork");
+        fprintf(stderr, "unable to fork new process\n");
+        exit(1);  /* we can't do anything here, so just exit. */
+    }
+/*    RAISE_SIGSTOP(DETACH);*/
+#endif
+    if ((x = apr_proc_new_sessid()) != APR_SUCCESS) {
+        return x;
     }
 #endif
 
Index: srclib/apr/threadproc/os2/proc.c
===================================================================
RCS file: /home/cvspublic/apr/threadproc/os2/proc.c,v
retrieving revision 1.47
diff -u -r1.47 proc.c
--- srclib/apr/threadproc/os2/proc.c	26 Oct 2001 02:31:04 -0000	1.47
+++ srclib/apr/threadproc/os2/proc.c	8 Jan 2002 07:36:40 -0000
@@ -618,9 +618,12 @@
     return APR_SUCCESS;
 }
 
+APR_DECLARE(apr_status_t) apr_proc_new_sessid(void)
+{
+    return APR_ENOTIMPL;
+}
 
-
-APR_DECLARE(apr_status_t) apr_proc_detach()
+APR_DECLARE(apr_status_t) apr_proc_detach(void)
 {
     return APR_ENOTIMPL;
 }
Index: srclib/apr/threadproc/unix/procsup.c
===================================================================
RCS file: /home/cvspublic/apr/threadproc/unix/procsup.c,v
retrieving revision 1.33
diff -u -r1.33 procsup.c
--- srclib/apr/threadproc/unix/procsup.c	28 Dec 2001 19:03:48 -0000	1.33
+++ srclib/apr/threadproc/unix/procsup.c	8 Jan 2002 07:36:41 -0000
@@ -54,24 +54,10 @@
 
 #include "threadproc.h"
 
-APR_DECLARE(apr_status_t) apr_proc_detach(void)
+APR_DECLARE(apr_status_t) apr_proc_new_sessid(void)
 {
-    int x;
     pid_t pgrp;
 
-    chdir("/");
-#if !defined(MPE) && !defined(OS2) && !defined(TPF) && !defined(BEOS)
-/* Don't detach for MPE because child processes can't survive the death of
-   the parent. */
-    if ((x = fork()) > 0)
-        exit(0);
-    else if (x == -1) {
-        perror("fork");
-        fprintf(stderr, "unable to fork new process\n");
-        exit(1);  /* we can't do anything here, so just exit. */
-    }
-/*    RAISE_SIGSTOP(DETACH);*/
-#endif
 #ifdef HAVE_SETSID
     if ((pgrp = setsid()) == -1) {
         return errno;
@@ -91,6 +77,31 @@
         return errno;
     }
 #endif
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_status_t) apr_proc_detach(void)
+{
+    int x;
+
+    chdir("/");
+#if !defined(MPE) && !defined(OS2) && !defined(TPF) && !defined(BEOS)
+/* Don't detach for MPE because child processes can't survive the death of
+   the parent. */
+    if ((x = fork()) > 0)
+        exit(0);
+    else if (x == -1) {
+        perror("fork");
+        fprintf(stderr, "unable to fork new process\n");
+        exit(1);  /* we can't do anything here, so just exit. */
+    }
+/*    RAISE_SIGSTOP(DETACH);*/
+#endif
+
+    if ((x = apr_proc_new_sessid()) != APR_SUCCESS) {
+        return x;
+    }
 
     /* close out the standard file descriptors */
     if (freopen("/dev/null", "r", stdin) == NULL) {

-- 
Jos Backus                 _/  _/_/_/        Santa Clara, CA
                          _/  _/   _/
                         _/  _/_/_/             
                    _/  _/  _/    _/
josb@cncdsl.com     _/_/   _/_/_/            use Std::Disclaimer;

Mime
View raw message