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__
|
#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.
|
* Open the error log and replace stderr with it.
|
||||||
* @param s_main The main server
|
* @param s_main The main server
|
||||||
|
@ -418,3 +418,4 @@ EXPORTS
|
|||||||
ap_xml_insert_uri
|
ap_xml_insert_uri
|
||||||
|
|
||||||
ap_os_create_privileged_process
|
ap_os_create_privileged_process
|
||||||
|
ap_open_stderr_log
|
||||||
|
@ -174,6 +174,13 @@ static const TRANS priorities[] = {
|
|||||||
{NULL, -1},
|
{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,
|
static int log_child(apr_pool_t *p, const char *progname,
|
||||||
apr_file_t **fpin)
|
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) &&
|
if (((level & APLOG_LEVELMASK) != APLOG_NOTICE) &&
|
||||||
((level & APLOG_LEVELMASK) > DEFAULT_LOGLEVEL))
|
((level & APLOG_LEVELMASK) > DEFAULT_LOGLEVEL))
|
||||||
return;
|
return;
|
||||||
apr_open_stderr(&logf, pool);
|
logf = stderr_log;
|
||||||
}
|
}
|
||||||
else if (s->error_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);
|
stat = apr_create_pool(&cntx, NULL);
|
||||||
if (stat != APR_SUCCESS) {
|
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,
|
ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, NULL,
|
||||||
"apr_create_pool() failed to create "
|
"apr_create_pool() failed to create "
|
||||||
"initial context");
|
"initial context");
|
||||||
@ -221,6 +224,8 @@ static process_rec *create_process(int argc, const char * const *argv)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ap_open_stderr_log(cntx);
|
||||||
|
|
||||||
process = apr_palloc(cntx, sizeof(process_rec));
|
process = apr_palloc(cntx, sizeof(process_rec));
|
||||||
process->pool = cntx;
|
process->pool = cntx;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user