mirror of
https://github.com/apache/httpd.git
synced 2025-08-10 02:56:11 +00:00
Set up stderr logging explictly early in initialization so that a pool is
available for creating the APR representation of stderr. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87583 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@ -113,6 +113,12 @@ extern "C" {
|
||||
|
||||
#define APLOG_MARK __FILE__,__LINE__
|
||||
|
||||
/**
|
||||
* Set up for logging to stderr.
|
||||
* @param p The pool to allocate out of
|
||||
*/
|
||||
void ap_open_stderr_log(apr_pool_t *p);
|
||||
|
||||
/**
|
||||
* Open the error log and replace stderr with it.
|
||||
* @param s_main The main server
|
||||
|
@ -418,3 +418,4 @@ EXPORTS
|
||||
ap_xml_insert_uri
|
||||
|
||||
ap_os_create_privileged_process
|
||||
ap_open_stderr_log
|
||||
|
@ -174,6 +174,13 @@ static const TRANS priorities[] = {
|
||||
{NULL, -1},
|
||||
};
|
||||
|
||||
static apr_file_t *stderr_log;
|
||||
|
||||
void ap_open_stderr_log(apr_pool_t *p)
|
||||
{
|
||||
apr_open_stderr(&stderr_log, p);
|
||||
}
|
||||
|
||||
static int log_child(apr_pool_t *p, const char *progname,
|
||||
apr_file_t **fpin)
|
||||
{
|
||||
@ -346,7 +353,7 @@ static void log_error_core(const char *file, int line, int level,
|
||||
if (((level & APLOG_LEVELMASK) != APLOG_NOTICE) &&
|
||||
((level & APLOG_LEVELMASK) > DEFAULT_LOGLEVEL))
|
||||
return;
|
||||
apr_open_stderr(&logf, pool);
|
||||
logf = stderr_log;
|
||||
}
|
||||
else if (s->error_log) {
|
||||
/*
|
||||
|
@ -214,6 +214,9 @@ static process_rec *create_process(int argc, const char * const *argv)
|
||||
|
||||
stat = apr_create_pool(&cntx, NULL);
|
||||
if (stat != APR_SUCCESS) {
|
||||
/* XXX From the time that we took away the NULL pool->malloc mapping
|
||||
* we have been unable to log here without segfaulting.
|
||||
*/
|
||||
ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, NULL,
|
||||
"apr_create_pool() failed to create "
|
||||
"initial context");
|
||||
@ -221,6 +224,8 @@ static process_rec *create_process(int argc, const char * const *argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ap_open_stderr_log(cntx);
|
||||
|
||||
process = apr_palloc(cntx, sizeof(process_rec));
|
||||
process->pool = cntx;
|
||||
|
||||
|
Reference in New Issue
Block a user