mirror of
https://github.com/apache/httpd.git
synced 2025-11-06 16:49:32 +03:00
- Add another check during ErrorLogFormat parsing
- Simplify code (including Ruediger's suggestions) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@993120 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -5,7 +5,7 @@ Changes with Apache 2.3.9
|
|||||||
*) core: Add ErrorLogFormat to allow configuring error log format, including
|
*) core: Add ErrorLogFormat to allow configuring error log format, including
|
||||||
additional information that is logged once per connection or request. Add
|
additional information that is logged once per connection or request. Add
|
||||||
error log IDs for connections and request to allow correlating error log
|
error log IDs for connections and request to allow correlating error log
|
||||||
lines and the corresponding access log entry.
|
lines and the corresponding access log entry. [Stefan Fritsch]
|
||||||
|
|
||||||
*) core: Disable sendfile by default. [Stefan Fritsch]
|
*) core: Disable sendfile by default. [Stefan Fritsch]
|
||||||
|
|
||||||
|
|||||||
@@ -3272,6 +3272,10 @@ static apr_array_header_t *parse_errorlog_string(apr_pool_t *p,
|
|||||||
}
|
}
|
||||||
seen_msg_fmt = 1;
|
seen_msg_fmt = 1;
|
||||||
}
|
}
|
||||||
|
if (want_msg_fmt && item->flags & AP_ERRORLOG_FLAG_REQUIRED) {
|
||||||
|
*err = "The '+' flag cannot be used in the main error log format";
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (want_msg_fmt && !seen_msg_fmt) {
|
if (want_msg_fmt && !seen_msg_fmt) {
|
||||||
@@ -3299,7 +3303,7 @@ static const char *set_errorlog_format(cmd_parms *cmd, void *dummy,
|
|||||||
sizeof(apr_array_header_t *));
|
sizeof(apr_array_header_t *));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg2 && *arg2) {
|
if (*arg2) {
|
||||||
apr_array_header_t **e;
|
apr_array_header_t **e;
|
||||||
e = (apr_array_header_t **) apr_array_push(conf->error_log_conn);
|
e = (apr_array_header_t **) apr_array_push(conf->error_log_conn);
|
||||||
*e = parse_errorlog_string(cmd->pool, arg2, &err_string, 0);
|
*e = parse_errorlog_string(cmd->pool, arg2, &err_string, 0);
|
||||||
@@ -3311,7 +3315,7 @@ static const char *set_errorlog_format(cmd_parms *cmd, void *dummy,
|
|||||||
sizeof(apr_array_header_t *));
|
sizeof(apr_array_header_t *));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arg2 && *arg2) {
|
if (*arg2) {
|
||||||
apr_array_header_t **e;
|
apr_array_header_t **e;
|
||||||
e = (apr_array_header_t **) apr_array_push(conf->error_log_req);
|
e = (apr_array_header_t **) apr_array_push(conf->error_log_req);
|
||||||
*e = parse_errorlog_string(cmd->pool, arg2, &err_string, 0);
|
*e = parse_errorlog_string(cmd->pool, arg2, &err_string, 0);
|
||||||
|
|||||||
32
server/log.c
32
server/log.c
@@ -712,25 +712,24 @@ static int log_apr_status(const ap_errorlog_info *info, const char *arg,
|
|||||||
char *buf, int buflen)
|
char *buf, int buflen)
|
||||||
{
|
{
|
||||||
apr_status_t status = info->status;
|
apr_status_t status = info->status;
|
||||||
int len = 0;
|
int len;
|
||||||
if (!status)
|
if (!status)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (status < APR_OS_START_EAIERR) {
|
if (status < APR_OS_START_EAIERR) {
|
||||||
len += apr_snprintf(buf + len, buflen - len,
|
len = apr_snprintf(buf, buflen, "(%d)", status);
|
||||||
"(%d)", status);
|
|
||||||
}
|
}
|
||||||
else if (status < APR_OS_START_SYSERR) {
|
else if (status < APR_OS_START_SYSERR) {
|
||||||
len += apr_snprintf(buf + len, buflen - len,
|
len = apr_snprintf(buf, buflen, "(EAI %d)",
|
||||||
"(EAI %d)", status - APR_OS_START_EAIERR);
|
status - APR_OS_START_EAIERR);
|
||||||
}
|
}
|
||||||
else if (status < 100000 + APR_OS_START_SYSERR) {
|
else if (status < 100000 + APR_OS_START_SYSERR) {
|
||||||
len += apr_snprintf(buf + len, buflen - len,
|
len = apr_snprintf(buf, buflen, "(OS %d)",
|
||||||
"(OS %d)", status - APR_OS_START_SYSERR);
|
status - APR_OS_START_SYSERR);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
len += apr_snprintf(buf + len, buflen - len,
|
len = apr_snprintf(buf, buflen, "(os 0x%08x)",
|
||||||
"(os 0x%08x)", status - APR_OS_START_SYSERR);
|
status - APR_OS_START_SYSERR);
|
||||||
}
|
}
|
||||||
apr_strerror(status, buf + len, buflen - len);
|
apr_strerror(status, buf + len, buflen - len);
|
||||||
len += strlen(buf + len);
|
len += strlen(buf + len);
|
||||||
@@ -813,7 +812,7 @@ static void add_log_id(const conn_rec *c, const request_rec *r)
|
|||||||
id ^= tmp;
|
id ^= tmp;
|
||||||
}
|
}
|
||||||
#if APR_HAS_THREADS
|
#if APR_HAS_THREADS
|
||||||
if (c) {
|
{
|
||||||
apr_uintptr_t tmp2 = (apr_uintptr_t)c->current_thread;
|
apr_uintptr_t tmp2 = (apr_uintptr_t)c->current_thread;
|
||||||
tmp = tmp2;
|
tmp = tmp2;
|
||||||
tmp = tmp << 32;
|
tmp = tmp << 32;
|
||||||
@@ -821,14 +820,15 @@ static void add_log_id(const conn_rec *c, const request_rec *r)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
len = apr_base64_encode_len(sizeof(id));
|
||||||
* The apr-util docs wrongly states encoded strings are not 0-terminated.
|
|
||||||
* Let's be save and allocate an additional byte.
|
|
||||||
*/
|
|
||||||
len = 1 + apr_base64_encode_len(sizeof(id));
|
|
||||||
encoded = apr_palloc(r ? r->pool : c->pool, len);
|
encoded = apr_palloc(r ? r->pool : c->pool, len);
|
||||||
apr_base64_encode(encoded, (char *)&id, sizeof(id));
|
apr_base64_encode(encoded, (char *)&id, sizeof(id));
|
||||||
encoded[11] = '\0'; /* omit last char which is always '=' */
|
|
||||||
|
/*
|
||||||
|
* Only the first 11 chars are significant, the last (12th) char is
|
||||||
|
* always '='.
|
||||||
|
*/
|
||||||
|
encoded[11] = '\0';
|
||||||
|
|
||||||
/* need to cast const away */
|
/* need to cast const away */
|
||||||
if (r) {
|
if (r) {
|
||||||
|
|||||||
Reference in New Issue
Block a user