]> granicus.if.org Git - apache/commitdiff
Revert r568762; will reapply in two segments
authorWilliam A. Rowe Jr <wrowe@apache.org>
Thu, 23 Aug 2007 00:05:58 +0000 (00:05 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Thu, 23 Aug 2007 00:05:58 +0000 (00:05 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@568778 13f79535-47bb-0310-9956-ffa450edef68

server/main.c

index c63d05e6b248831b8818d9a36bc9f8ec862ca4cb..7285eae1a0e08f3832d485e71324d9f3525c0219 100644 (file)
@@ -37,7 +37,6 @@
 #include "http_vhost.h"
 #include "apr_uri.h"
 #include "util_ebcdic.h"
-#include "util_time.h"
 #include "ap_mpm.h"
 #include "mpm_common.h"
 
@@ -277,29 +276,20 @@ static int abort_on_oom(int retcode)
     return retcode; /* unreachable, hopefully. */
 }
 
-static process_rec *init_process(int *argc, const char * const * *argv)
+static process_rec *create_process(int argc, const char * const *argv)
 {
     process_rec *process;
     apr_pool_t *cntx;
     apr_status_t stat;
-    const char *failed = "apr_app_initialize()";
-    stat = apr_app_initialize(argc, argv, NULL);
-    if (stat == APR_SUCCESS) {
-        failed = "apr_pool_create()";
-        stat = apr_pool_create(&cntx, NULL);
-    }
 
+    stat = apr_pool_create(&cntx, NULL);
     if (stat != APR_SUCCESS) {
-        /* For all intents and purposes, this is impossibly unlikely,
-         * but APR doesn't exist yet, we can't use it for reporting
-         * these earliest two failures;
+        /* XXX From the time that we took away the NULL pool->malloc mapping
+         *     we have been unable to log here without segfaulting.
          */
-        char ctimebuff[APR_CTIME_LEN + 1];
-        apr_ctime(ctimebuff, apr_time_now());
-        ctimebuff[APR_CTIME_LEN] = '\0';
-        fprintf(stderr, "[%s] [crit] (%d) %s: %s failed "
-                        "to initial context, exiting", 
-                        ctimebuff, stat, (*argv)[0], failed);
+        ap_log_error(APLOG_MARK, APLOG_ERR, stat, NULL,
+                     "apr_pool_create() failed to create "
+                     "initial context");
         apr_terminate();
         exit(1);
     }
@@ -308,19 +298,14 @@ static process_rec *init_process(int *argc, const char * const * *argv)
     apr_pool_tag(cntx, "process");
     ap_open_stderr_log(cntx);
 
-    /* Now we have initialized apr and our logger, no more
-     * exceptional error reporting required for the lifetime
-     * of this server process.
-     */
-
     process = apr_palloc(cntx, sizeof(process_rec));
     process->pool = cntx;
 
     apr_pool_create(&process->pconf, process->pool);
     apr_pool_tag(process->pconf, "pconf");
-    process->argc = *argc;
-    process->argv = *argv;
-    process->short_name = apr_filepath_name_get((*argv)[0]);
+    process->argc = argc;
+    process->argv = argv;
+    process->short_name = apr_filepath_name_get(argv[0]);
     return process;
 }
 
@@ -462,8 +447,7 @@ int main(int argc, const char * const argv[])
     server_rec *server_conf;
     apr_pool_t *pglobal;
     apr_pool_t *pconf;
-    apr_pool_t *plog; /* Pool of log streams, created after each read of conf */
-    apr_pool_t *old_plog; /* Pool of log streams to be destroyed this round */
+    apr_pool_t *plog; /* Pool of log streams, reset _after_ each read of conf */
     apr_pool_t *ptemp; /* Pool for temporary config stuff, reset often */
     apr_pool_t *pcommands; /* Pool for -D, -C and -c switches */
     apr_getopt_t *opt;
@@ -474,7 +458,9 @@ int main(int argc, const char * const argv[])
 
     AP_MONCONTROL(0); /* turn off profiling of startup */
 
-    process = init_process(&argc, &argv);
+    apr_app_initialize(&argc, &argv, NULL);
+
+    process = create_process(argc, argv);
     pglobal = process->pool;
     pconf = process->pconf;
     ap_server_argv0 = process->short_name;
@@ -686,16 +672,13 @@ int main(int argc, const char * const argv[])
         destroy_and_exit_process(process, 1);
     }
 
-    old_plog = plog;
-    apr_pool_tag(old_plog, "old_plog");
-    apr_pool_create(&plog, pglobal);
-    apr_pool_tag(plog, "plog");
+    apr_pool_clear(plog);
+
     if ( ap_run_open_logs(pconf, plog, ptemp, server_conf) != OK) {
         ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR,
                      0, NULL, "Unable to open logs");
         destroy_and_exit_process(process, 1);
     }
-    apr_pool_destroy(old_plog);
 
     if ( ap_run_post_config(pconf, plog, ptemp, server_conf) != OK) {
         ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR, 0,
@@ -746,16 +729,12 @@ int main(int argc, const char * const argv[])
             destroy_and_exit_process(process, 1);
         }
 
-        old_plog = plog;
-        apr_pool_tag(old_plog, "old_plog");
-        apr_pool_create(&plog, pglobal);
-        apr_pool_tag(plog, "plog");
+        apr_pool_clear(plog);
         if (ap_run_open_logs(pconf, plog, ptemp, server_conf) != OK) {
             ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR,
                          0, NULL, "Unable to open logs");
             destroy_and_exit_process(process, 1);
         }
-        apr_pool_clear(old_plog);
 
         if (ap_run_post_config(pconf, plog, ptemp, server_conf) != OK) {
             ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR,