- 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:
Stefan Fritsch
2010-09-06 18:53:38 +00:00
parent 800bdf5581
commit 3ad914e110
3 changed files with 23 additions and 19 deletions

View File

@ -5,7 +5,7 @@ Changes with Apache 2.3.9
*) core: Add ErrorLogFormat to allow configuring error log format, including
additional information that is logged once per connection or request. Add
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]

View File

@ -3272,6 +3272,10 @@ static apr_array_header_t *parse_errorlog_string(apr_pool_t *p,
}
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) {
@ -3299,7 +3303,7 @@ static const char *set_errorlog_format(cmd_parms *cmd, void *dummy,
sizeof(apr_array_header_t *));
}
if (arg2 && *arg2) {
if (*arg2) {
apr_array_header_t **e;
e = (apr_array_header_t **) apr_array_push(conf->error_log_conn);
*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 *));
}
if (arg2 && *arg2) {
if (*arg2) {
apr_array_header_t **e;
e = (apr_array_header_t **) apr_array_push(conf->error_log_req);
*e = parse_errorlog_string(cmd->pool, arg2, &err_string, 0);

View File

@ -712,25 +712,24 @@ static int log_apr_status(const ap_errorlog_info *info, const char *arg,
char *buf, int buflen)
{
apr_status_t status = info->status;
int len = 0;
int len;
if (!status)
return 0;
if (status < APR_OS_START_EAIERR) {
len += apr_snprintf(buf + len, buflen - len,
"(%d)", status);
len = apr_snprintf(buf, buflen, "(%d)", status);
}
else if (status < APR_OS_START_SYSERR) {
len += apr_snprintf(buf + len, buflen - len,
"(EAI %d)", status - APR_OS_START_EAIERR);
len = apr_snprintf(buf, buflen, "(EAI %d)",
status - APR_OS_START_EAIERR);
}
else if (status < 100000 + APR_OS_START_SYSERR) {
len += apr_snprintf(buf + len, buflen - len,
"(OS %d)", status - APR_OS_START_SYSERR);
len = apr_snprintf(buf, buflen, "(OS %d)",
status - APR_OS_START_SYSERR);
}
else {
len += apr_snprintf(buf + len, buflen - len,
"(os 0x%08x)", status - APR_OS_START_SYSERR);
len = apr_snprintf(buf, buflen, "(os 0x%08x)",
status - APR_OS_START_SYSERR);
}
apr_strerror(status, buf + len, buflen - len);
len += strlen(buf + len);
@ -813,7 +812,7 @@ static void add_log_id(const conn_rec *c, const request_rec *r)
id ^= tmp;
}
#if APR_HAS_THREADS
if (c) {
{
apr_uintptr_t tmp2 = (apr_uintptr_t)c->current_thread;
tmp = tmp2;
tmp = tmp << 32;
@ -821,14 +820,15 @@ static void add_log_id(const conn_rec *c, const request_rec *r)
}
#endif
/*
* 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));
len = apr_base64_encode_len(sizeof(id));
encoded = apr_palloc(r ? r->pool : c->pool, len);
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 */
if (r) {