]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Add AP_ERRORLOG_PROVIDER_ADD_EOL_STR flag for ap_errorlog_provider, bump MMN.
authorJan Kaluža <jkaluza@apache.org>
Tue, 24 Sep 2013 11:03:55 +0000 (11:03 +0000)
committerJan Kaluža <jkaluza@apache.org>
Tue, 24 Sep 2013 11:03:55 +0000 (11:03 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1525845 13f79535-47bb-0310-9956-ffa450edef68

include/ap_mmn.h
include/http_core.h
modules/loggers/mod_syslog.c
server/log.c

index fb5836c75d473d6b007fd1e6534fcc14972bf090..a7f5fa5c32a61eb3f0a62aa400486c95ad87f044 100644 (file)
  * 20130702.2 (2.5.0-dev)  Add ap_log_data(), ap_log_rdata(), etc.
  * 20130702.3 (2.5.0-dev)  Add util_fcgi.h, FastCGI protocol support
  * 20130903.0 (2.5.0-dev)  Changes sizeof(worker_score) in scoreboard 
+ * 20130924.0 (2.5.0-dev)  Add ap_errorlog_provider
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */
 
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
-#define MODULE_MAGIC_NUMBER_MAJOR 20130903
+#define MODULE_MAGIC_NUMBER_MAJOR 20130924
 #endif
 #define MODULE_MAGIC_NUMBER_MINOR 0                  /* 0...n */
 
index a31aa054a179f379047fe958c85f607544b92eea..59b584853cc9a73a75b9965d432f8b010c6c18d4 100644 (file)
@@ -846,6 +846,9 @@ typedef struct ap_errorlog_info {
 #define AP_ERRORLOG_PROVIDER_VERSION "0"
 #define AP_ERRORLOG_DEFAULT_PROVIDER "file"
 
+/** add APR_EOL_STR to the end of log message */
+#define AP_ERRORLOG_PROVIDER_ADD_EOL_STR       1
+
 typedef struct ap_errorlog_provider ap_errorlog_provider;
 
 struct ap_errorlog_provider {
@@ -863,7 +866,10 @@ struct ap_errorlog_provider {
      * @param len Length of the error message
      */
     apr_status_t (*writer)(const ap_errorlog_info *info, void *handle,
-                           const char *errstr, int len);
+                           const char *errstr, apr_size_t len);
+
+    /** a combination of the AP_ERRORLOG_PROVIDER_* flags */
+    unsigned int flags;
 };
 
 /**
index 0c9320525fcc5d353ff0c6249ba3e2831a4566ff..e04e2d928434ddcbde5f92bf19f760f91404805b 100644 (file)
@@ -126,7 +126,8 @@ static void *syslog_error_log_init(apr_pool_t *p, server_rec *s)
 }
 
 static apr_status_t syslog_error_log(const ap_errorlog_info *info,
-                                     void *handle, const char *errstr, int len)
+                                     void *handle, const char *errstr,
+                                     apr_size_t len)
 {
     int level = info->level;
 
@@ -141,7 +142,8 @@ static void syslog_register_hooks(apr_pool_t *p)
 {
     static const ap_errorlog_provider syslog_provider = {
         &syslog_error_log_init,
-        &syslog_error_log
+        &syslog_error_log,
+        0
     };
 
     ap_register_provider(p, AP_ERRORLOG_PROVIDER_GROUP, "syslog",
index bd40a591e38898f57253159456d0c08f916e9d7a..b3157369f55fae65c874544c60d9252b3187df86 100644 (file)
@@ -994,11 +994,6 @@ static void write_logline(char *errstr, apr_size_t len, apr_file_t *logf,
                           int level)
 {
 
-    /* Truncate for the terminator (as apr_snprintf does) */
-    if (len > MAX_STRING_LEN - sizeof(APR_EOL_STR)) {
-        len = MAX_STRING_LEN - sizeof(APR_EOL_STR);
-    }
-    strcpy(errstr + len, APR_EOL_STR);
     apr_file_puts(errstr, logf);
     apr_file_flush(logf);
 }
@@ -1173,6 +1168,15 @@ static void log_error_core(const char *file, int line, int module_index,
             continue;
         }
 
+        if (logf || (s->errorlog_provider->flags &
+            AP_ERRORLOG_PROVIDER_ADD_EOL_STR)) {
+            /* Truncate for the terminator (as apr_snprintf does) */
+            if (len > MAX_STRING_LEN - sizeof(APR_EOL_STR)) {
+                len = MAX_STRING_LEN - sizeof(APR_EOL_STR);
+            }
+            strcpy(errstr + len, APR_EOL_STR);
+        }
+
         if (logf) {
             write_logline(errstr, len, logf, level_and_mask);
         }