-*- coding: utf-8 -*-
Changes with Apache 2.4.0
+ *) core: Pass ap_errorlog_info struct to error log hook. [Stefan Fritsch]
+
*) mod_cache_disk: Make sure we check return codes on all writes and
attempts to close, and clean up after ourselves in these cases.
PR43589. [Graham Leggett]
(Either fixing it or removing it constitutes an API change, which is
why it matters)
- * Change the arguments to the error log hook, to allow access to the
- conn_rec. Or decide that we don't want it.
-
NEW ISSUES THAT WOULD BE NICE TO HAVE DONE IN 2.4 BUT ARE NOT BLOCKERS
* Configure code for luajit is broken (links to wrong library).
<li>New function ap_get_server_name_for_url to support ipv6 literals.</li>
<li>New function ap_register_errorlog_handler to register errorlog
format string handlers.</li>
+ <li>Arguments of error_log hook have changed. Declaration has moved to
+ <code>http_core.h</code>.</li>
<li>New function ap_state_query to determine if the server is in the
initial configuration preflight phase or not. This is both easier to
use and more correct than the old method of creating a pool userdata
* 20111025.2 (2.3.15-dev) Add ap_lua_ssl_val to mod_lua
* 20111025.3 (2.4.0-dev) Add reclvl to ap_expr_eval_ctx_t
* 20111122.0 (2.4.0-dev) Remove parts of conn_state_t that are private to the MPM
+ * 20111123.0 (2.4.0-dev) Pass ap_errorlog_info struct to error_log hook,
+ * add pool to ap_errorlog_info.
*/
#define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
#ifndef MODULE_MAGIC_NUMBER_MAJOR
-#define MODULE_MAGIC_NUMBER_MAJOR 20111122
+#define MODULE_MAGIC_NUMBER_MAJOR 20111123
#endif
#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
/** r->main if r is a subrequest, otherwise equal to r */
const request_rec *rmain;
- /** name of source file where the log message was produced. */
+ /** pool passed to ap_log_perror, NULL otherwise */
+ apr_pool_t *pool;
+
+ /** name of source file where the log message was produced, NULL if N/A. */
const char *file;
/** line number in the source file, 0 if N/A */
int line;
/** module index of module that produced the log message, APLOG_NO_MODULE if N/A. */
int module_index;
- /** log level of error message, -1 if N/A */
+ /** log level of error message (flags like APLOG_STARTUP have been removed), -1 if N/A */
int level;
/** apr error status related to the log message, 0 if no error */
unsigned int min_loglevel;
} ap_errorlog_format_item;
+/**
+ * hook method to log error messages
+ * @ingroup hooks
+ * @param info pointer to ap_errorlog_info struct which contains all
+ * the details
+ * @param errstr the (unformatted) message to log
+ * @warning Allocating from the usual pools (pool, info->c->pool, info->p->pool)
+ * must be avoided because it can cause memory leaks.
+ * Use a subpool if necessary.
+ */
+AP_DECLARE_HOOK(void, error_log, (const ap_errorlog_info *info,
+ const char *errstr))
+
AP_CORE_DECLARE(void) ap_register_log_hooks(apr_pool_t *p);
AP_CORE_DECLARE(void) ap_register_config_hooks(apr_pool_t *p);
*/
AP_DECLARE(apr_file_t *) ap_piped_log_write_fd(piped_log *pl);
-/**
- * hook method to log error messages
- * @ingroup hooks
- * @param file The file in which this function is called
- * @param line The line number on which this function is called
- * @param module_index The module_index of the module generating this message
- * @param level The level of this error message
- * @param status The status code from the previous command
- * @param s The server which we are logging for
- * @param r The request which we are logging for
- * @param pool Memory pool to allocate from
- * @param errstr message to log
- */
-AP_DECLARE_HOOK(void, error_log, (const char *file, int line,
- int module_index, int level,
- apr_status_t status, const server_rec *s,
- const request_rec *r, apr_pool_t *pool,
- const char *errstr))
-
/**
* hook method to generate unique id for connection or request
* @ingroup hooks
info.s = s;
info.c = c;
+ info.pool = pool;
info.file = NULL;
info.line = 0;
info.status = 0;
* prefix and suffix.
*/
errstr[errstr_end] = '\0';
- ap_run_error_log(file, line, module_index, level, status, s, r, pool,
- errstr + errstr_start);
+ ap_run_error_log(&info, errstr + errstr_start);
}
*errstr = '\0';
}
AP_IMPLEMENT_HOOK_VOID(error_log,
- (const char *file, int line, int module_index, int level,
- apr_status_t status, const server_rec *s,
- const request_rec *r, apr_pool_t *pool,
- const char *errstr), (file, line, module_index, level,
- status, s, r, pool, errstr))
+ (const ap_errorlog_info *info, const char *errstr),
+ (info, errstr))
AP_IMPLEMENT_HOOK_RUN_FIRST(int, generate_log_id,
(const conn_rec *c, const request_rec *r,