[Pkg-apache-commits] [SCM] Debian packaging for apache2 (Apache HTTPD 2.x) branch, next, updated. 82f15a40806a60eabfd58eac1c3716e58fa8cec1
Stefan Fritsch
sf at sfritsch.de
Sun Apr 15 18:21:39 UTC 2012
The following commit has been merged in the next branch:
commit 29c785084d359aea1a6f3b4685e136cd6246be8f
Author: Stefan Fritsch <sf at sfritsch.de>
Date: Sun Apr 15 19:53:20 2012 +0200
Update to 2.4.2
remove obsolete patches:
- pull_branch_2.4.x.patch
- fixes_from_upstream_trunk.patch
update patches:
- no_LD_LIBRARY_PATH.patch
diff --git a/debian/changelog b/debian/changelog
index 56d4002..b281afb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,8 @@
-apache2 (2.4.1-4) experimental; urgency=low
+apache2 (2.4.2-1) experimental; urgency=low
- [ Arno Töll ]
+ * New upstream release
+ [ Arno Töll ]
* Drop update-alternative call in postrm. Our prerm script catches them
already anyway.
* Update my mail address.
@@ -22,7 +23,6 @@ apache2 (2.4.1-4) experimental; urgency=low
[ Stefan Fritsch ]
-
* Change default config to deny access to / in the file system and only
allow access to /var/www, /usr/share, and /usr/lib/cgi-bin. Closes: #341022
* Disable MultiViews in the default config.
diff --git a/debian/patches/fixes_from_upstream_trunk.patch b/debian/patches/fixes_from_upstream_trunk.patch
deleted file mode 100644
index 2853762..0000000
--- a/debian/patches/fixes_from_upstream_trunk.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-Description: add r1294306 and r1307067 from upstream trunk
-Forwarded: not-needed
-Author: Stefan Fritsch <sf at debian.org>
-Last-Update: 2012-03-31
-commit b9feb2ddc332776a4bb02dc493a75ee091d9e3b3
-Author: Stefan Fritsch <sf at apache.org>
-Date: Mon Feb 27 20:01:40 2012 +0000
-
- Initialize EC temporary key on server startup, as for DH and
- RSA. This fixes a race condition that could lead to a crash with threaded
- MPMs.
-
-
- git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1294306 13f79535-47bb-0310-9956-ffa450edef68
-
-diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c
-index acaf5d5..5d81647 100644
---- a/modules/ssl/ssl_engine_init.c
-+++ b/modules/ssl/ssl_engine_init.c
-@@ -77,6 +77,9 @@ static void ssl_tmp_keys_free(server_rec *s)
-
- MODSSL_TMP_KEYS_FREE(mc, RSA);
- MODSSL_TMP_KEYS_FREE(mc, DH);
-+#ifndef OPENSSL_NO_EC
-+ MODSSL_TMP_KEY_FREE(mc, EC_KEY, SSL_TMP_KEY_EC_256);
-+#endif
- }
-
- static int ssl_tmp_key_init_rsa(server_rec *s,
-@@ -157,6 +160,40 @@ static int ssl_tmp_key_init_dh(server_rec *s,
- return OK;
- }
-
-+#ifndef OPENSSL_NO_EC
-+static int ssl_tmp_key_init_ec(server_rec *s,
-+ int bits, int idx)
-+{
-+ SSLModConfigRec *mc = myModConfig(s);
-+ EC_KEY *ecdh = NULL;
-+
-+ /* XXX: Are there any FIPS constraints we should enforce? */
-+
-+ if (bits != 256) {
-+ ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, APLOGNO(02298)
-+ "Init: Failed to generate temporary "
-+ "%d bit EC parameters, only 256 bits supported", bits);
-+ return !OK;
-+ }
-+
-+ if ((ecdh = EC_KEY_new()) == NULL ||
-+ EC_KEY_set_group(ecdh, EC_GROUP_new_by_curve_name(NID_X9_62_prime256v1)) != 1)
-+ {
-+ ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, APLOGNO(02299)
-+ "Init: Failed to generate temporary "
-+ "%d bit EC parameters", bits);
-+ return !OK;
-+ }
-+
-+ mc->pTmpKeys[idx] = ecdh;
-+ return OK;
-+}
-+
-+#define MODSSL_TMP_KEY_INIT_EC(s, bits) \
-+ ssl_tmp_key_init_ec(s, bits, SSL_TMP_KEY_EC_##bits)
-+
-+#endif
-+
- #define MODSSL_TMP_KEY_INIT_RSA(s, bits) \
- ssl_tmp_key_init_rsa(s, bits, SSL_TMP_KEY_RSA_##bits)
-
-@@ -181,6 +218,15 @@ static int ssl_tmp_keys_init(server_rec *s)
- return !OK;
- }
-
-+#ifndef OPENSSL_NO_EC
-+ ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, s,
-+ "Init: Generating temporary EC parameters (256 bits)");
-+
-+ if (MODSSL_TMP_KEY_INIT_EC(s, 256)) {
-+ return !OK;
-+ }
-+#endif
-+
- return OK;
- }
-
-diff --git a/modules/ssl/ssl_engine_kernel.c b/modules/ssl/ssl_engine_kernel.c
-index 8d1aad8..35b2a85 100644
---- a/modules/ssl/ssl_engine_kernel.c
-+++ b/modules/ssl/ssl_engine_kernel.c
-@@ -1386,24 +1386,20 @@ DH *ssl_callback_TmpDH(SSL *ssl, int export, int keylen)
- EC_KEY *ssl_callback_TmpECDH(SSL *ssl, int export, int keylen)
- {
- conn_rec *c = (conn_rec *)SSL_get_app_data(ssl);
-- static EC_KEY *ecdh = NULL;
-- static int init = 0;
-+ SSLModConfigRec *mc = myModConfigFromConn(c);
-+ int idx;
-
- /* XXX Uses 256-bit key for now. TODO: support other sizes. */
- ap_log_cerror(APLOG_MARK, APLOG_TRACE2, 0, c,
- "handing out temporary 256 bit ECC key");
-
-- if (init == 0) {
-- ecdh = EC_KEY_new();
-- if (ecdh != NULL) {
-- /* ecdh->group = EC_GROUP_new_by_nid(NID_secp160r2); */
-- EC_KEY_set_group(ecdh,
-- EC_GROUP_new_by_curve_name(NID_X9_62_prime256v1));
-- }
-- init = 1;
-+ switch (keylen) {
-+ case 256:
-+ default:
-+ idx = SSL_TMP_KEY_EC_256;
- }
-
-- return ecdh;
-+ return (EC_KEY *)mc->pTmpKeys[idx];
- }
- #endif
-
-diff --git a/modules/ssl/ssl_private.h b/modules/ssl/ssl_private.h
-index fb9ac26..1b5d042 100644
---- a/modules/ssl/ssl_private.h
-+++ b/modules/ssl/ssl_private.h
-@@ -298,7 +298,12 @@ typedef int ssl_algo_t;
- #define SSL_TMP_KEY_RSA_1024 (1)
- #define SSL_TMP_KEY_DH_512 (2)
- #define SSL_TMP_KEY_DH_1024 (3)
-+#ifndef OPENSSL_NO_EC
-+#define SSL_TMP_KEY_EC_256 (4)
-+#define SSL_TMP_KEY_MAX (5)
-+#else
- #define SSL_TMP_KEY_MAX (4)
-+#endif
-
- /**
- * Define the SSL options
-commit e2767fc2deb44bba6ef1a67fb2aaee9de240ed94
-Author: Stefan Fritsch <sf at apache.org>
-Date: Thu Mar 29 19:24:04 2012 +0000
-
- Fix treatment of regex backreferences.
-
- r904765 only made half of the necessary changes to remove the use
- of '&' as an alias for '$0' and allow to escape any character with a
- backslash.
-
-
- git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1307067 13f79535-47bb-0310-9956-ffa450edef68
-
-diff --git a/server/util.c b/server/util.c
-index 3c38fa9..177f378 100644
---- a/server/util.c
-+++ b/server/util.c
-@@ -437,15 +437,13 @@ static apr_status_t regsub_core(apr_pool_t *p, char **result,
- src = input;
-
- while ((c = *src++) != '\0') {
-- if (c == '&')
-- no = 0;
-- else if (c == '$' && apr_isdigit(*src))
-+ if (c == '$' && apr_isdigit(*src))
- no = *src++ - '0';
- else
- no = AP_MAX_REG_MATCH;
-
- if (no >= AP_MAX_REG_MATCH) { /* Ordinary character. */
-- if (c == '\\' && (*src == '$' || *src == '&'))
-+ if (c == '\\' && *src)
- c = *src++;
- *dst++ = c;
- }
diff --git a/debian/patches/no_LD_LIBRARY_PATH.patch b/debian/patches/no_LD_LIBRARY_PATH.patch
index 9a0f95f..a55cd03 100644
--- a/debian/patches/no_LD_LIBRARY_PATH.patch
+++ b/debian/patches/no_LD_LIBRARY_PATH.patch
@@ -1,16 +1,20 @@
Description: Remove LD_LIBRARY_PATH from envvars-std
Forwarded: no
Author: Adam Conrad <adconrad at 0c3.net>
-Last-Update: 2012-02-25
+Last-Update: 2012-04-15
Index: apache2/support/envvars-std.in
===================================================================
--- apache2.orig/support/envvars-std.in
+++ apache2/support/envvars-std.in
-@@ -18,7 +18,4 @@
+@@ -18,11 +18,4 @@
#
# This file is generated from envvars-std.in
#
-- at SHLIBPATH_VAR@="@exp_libdir@:$@SHLIBPATH_VAR@"
+-if test "x$@SHLIBPATH_VAR@" != "x" ; then
+- @SHLIBPATH_VAR@="@exp_libdir@:$@SHLIBPATH_VAR@"
+-else
+- @SHLIBPATH_VAR@="@exp_libdir@"
+-fi
-export @SHLIBPATH_VAR@
-#
@OS_SPECIFIC_VARS@
diff --git a/debian/patches/pull_branch_2.4.x.patch b/debian/patches/pull_branch_2.4.x.patch
deleted file mode 100644
index a228c93..0000000
--- a/debian/patches/pull_branch_2.4.x.patch
+++ /dev/null
@@ -1,1338 +0,0 @@
-Description: Pull code changes from upstream branch 2.4.x up to r1307835
-Forwarded: not-needed
-Author: various
-Last-Update: 2012-03-31
-
- *) mod_proxy: Add the forcerecovery balancer parameter that determines if
- recovery for balancer workers is enforced. [Ruediger Pluem]
-
- *) Fix MPM DSO load failure on AIX. [Jeff Trawick]
-
- *) mod_proxy: Correctly set up reverse proxy worker. PR 52935.
- [Petter Berntsen <petterb gmail.com>]
-
- *) mod_sed: Don't define PATH_MAX to a potentially undefined value, causing
- compile problems on GNU hurd. [Stefan Fritsch]
-
- *) core: Add ap_runtime_dir_relative() and DefaultRuntimeDir.
- [Jeff Trawick]
-
- *) core: Fix breakage of Listen directives with MPMs that use a
- per-directory config. PR 52904. [Stefan Fritsch]
-
- *) core: Disallow directives in AllowOverrideList which are only allowed
- in VirtualHost or server context. These are usually not prepared to be
- called in .htaccess files. [Stefan Fritsch]
-
- *) core: In AllowOverrideList, do not allow 'None' together with other
- directives. PR 52823. [Stefan Fritsch]
-
- *) mod_slotmem_shm: Support DEFAULT_REL_RUNTIMEDIR for file-based shm.
- [Jim Jagielski]
-
- *) core: Fix merging of AllowOverrideList and ContentDigest.
- [Stefan Fritsch]
-
- *) mod_request: Fix validation of the KeptBodySize argument so it
- doesn't always throw a configuration error. PR 52981 [Eric Covener]
-
- *) core: Add filesystem paths to access denied / access failed messages
- AH00035 and AH00036. [Eric Covener]
-
- *) mod_dumpio: Properly handle errors from subsequent input filters.
- PR 52914. [Stefan Fritsch]
-
- *) Unix MPMs: Fix small memory leak in parent process if connect()
- failed when waking up children. [Joe Orton]
-
- *) "DirectoryIndex disabled" now undoes DirectoryIndex settings in
- the current configuration section, not just previous config sections.
- PR 52845. [Eric Covener]
-
- *) mod_xml2enc: Fix broken handling of EOS buckets which could lead to
- response headers not being sent. PR 52766. [Stefan Fritsch]
-
- *) mod_ssl: Properly free the GENERAL_NAMEs. PR 32652. [Kaspar Brand]
-
- *) core: Check during config test that directories for the access
- logs actually exist. PR 29941. [Stefan Fritsch]
-
- *) mod_xml2enc, mod_proxy_html: Enable per-module loglevels.
- [Stefan Fritsch]
-
- *) mod_filter: Fix segfault with AddOutputFilterByType. PR 52755.
- [Stefan Fritsch]
-
- *) mod_session: Sessions are encoded as application/x-www-form-urlencoded
- strings, however we do not handle the encoding of spaces properly.
- Fixed. [Graham Leggett]
-
-diff --git a/modules/debugging/mod_dumpio.c b/modules/debugging/mod_dumpio.c
-index a56fa16..e02127b 100644
---- a/modules/debugging/mod_dumpio.c
-+++ b/modules/debugging/mod_dumpio.c
-@@ -146,6 +146,7 @@ static int dumpio_input_filter (ap_filter_t *f, apr_bucket_brigade *bb,
- } else {
- ap_log_cerror(APLOG_MARK, APLOG_TRACE7, 0, c,
- "mod_dumpio: %s - %d", f->frec->name, ret) ;
-+ return ret;
- }
-
- return APR_SUCCESS ;
-diff --git a/modules/filters/libsed.h b/modules/filters/libsed.h
-index a889d50..76cbc0c 100644
---- a/modules/filters/libsed.h
-+++ b/modules/filters/libsed.h
-@@ -28,9 +28,6 @@ extern "C" {
- #include <limits.h>
-
- #include "apr_file_io.h"
--#ifndef PATH_MAX
--#define PATH_MAX MAX_PATH
--#endif
-
- #define SED_NLINES 256
- #define SED_DEPTH 20
-diff --git a/modules/filters/mod_filter.c b/modules/filters/mod_filter.c
-index 32d8bd3..7dd7db1 100644
---- a/modules/filters/mod_filter.c
-+++ b/modules/filters/mod_filter.c
-@@ -131,6 +131,7 @@ static int filter_init(ap_filter_t *f)
- f->ctx = fctx;
- return OK;
- }
-+
- static int filter_lookup(ap_filter_t *f, ap_filter_rec_t *filter)
- {
- ap_filter_provider_t *provider;
-@@ -461,9 +462,11 @@ static const char *add_filter(cmd_parms *cmd, void *CFG,
- NULL);
- }
- provider->expr = node;
-+ provider->types = NULL;
- }
- else {
- provider->types = types;
-+ provider->expr = NULL;
- }
- provider->frec = provider_frec;
- provider->next = frec->providers;
-@@ -594,7 +597,7 @@ static const char *filter_bytype(cmd_parms *cmd, void *CFG,
- name = apr_pstrdup(cmd->temp_pool, argv[0]);
- types = apr_palloc(cmd->pool, argc * sizeof(char *));
- memcpy(types, &argv[1], (argc - 1) * sizeof(char *));
-- types[argc] = NULL;
-+ types[argc-1] = NULL;
- for (pname = apr_strtok(name, ";", &strtok_state);
- pname != NULL && rv == NULL;
- pname = apr_strtok(NULL, ";", &strtok_state)) {
-diff --git a/modules/filters/mod_proxy_html.c b/modules/filters/mod_proxy_html.c
-index 3bac898..6cbe87a 100644
---- a/modules/filters/mod_proxy_html.c
-+++ b/modules/filters/mod_proxy_html.c
-@@ -1265,7 +1265,8 @@ static void proxy_html_hooks(apr_pool_t *p)
- ap_hook_pre_config(mod_proxy_html, NULL, NULL, APR_HOOK_MIDDLE);
- ap_hook_insert_filter(proxy_html_insert, NULL, aszSucc, APR_HOOK_MIDDLE);
- }
--module AP_MODULE_DECLARE_DATA proxy_html_module = {
-+
-+AP_DECLARE_MODULE(proxy_html) = {
- STANDARD20_MODULE_STUFF,
- proxy_html_config,
- proxy_html_merge,
-diff --git a/modules/filters/mod_request.c b/modules/filters/mod_request.c
-index ae59ab6..9cbde0a 100644
---- a/modules/filters/mod_request.c
-+++ b/modules/filters/mod_request.c
-@@ -358,7 +358,7 @@ static const char *set_kept_body_size(cmd_parms *cmd, void *dconf,
- char *end = NULL;
-
- if (APR_SUCCESS != apr_strtoff(&(conf->keep_body), arg, &end, 10)
-- || conf->keep_body < 0 || end) {
-+ || conf->keep_body < 0 || *end) {
- return "KeptBodySize must be a valid size in bytes, or zero.";
- }
- conf->keep_body_set = 1;
-diff --git a/modules/filters/mod_xml2enc.c b/modules/filters/mod_xml2enc.c
-index fd54444..f82f8bf 100644
---- a/modules/filters/mod_xml2enc.c
-+++ b/modules/filters/mod_xml2enc.c
-@@ -392,13 +392,14 @@ static apr_status_t xml2enc_ffunc(ap_filter_t* f, apr_bucket_brigade* bb)
- while (b = APR_BRIGADE_FIRST(bb), b != APR_BRIGADE_SENTINEL(bb)) {
- ctx->bytes = 0;
- if (APR_BUCKET_IS_METADATA(b)) {
-+ APR_BUCKET_REMOVE(b);
- if (APR_BUCKET_IS_EOS(b)) {
- /* send remaining data */
-+ APR_BRIGADE_INSERT_TAIL(ctx->bbnext, b);
- return ap_fflush(f->next, ctx->bbnext);
- } else if (APR_BUCKET_IS_FLUSH(b)) {
- ap_fflush(f->next, ctx->bbnext);
- }
-- APR_BUCKET_REMOVE(b);
- apr_bucket_destroy(b);
- }
- else { /* data bucket */
-@@ -614,7 +615,8 @@ static void* xml2enc_merge(apr_pool_t* pool, void* BASE, void* ADD)
- ret->skipto = add->skipto ? add->skipto : base->skipto;
- return ret;
- }
--module AP_MODULE_DECLARE_DATA xml2enc_module = {
-+
-+AP_DECLARE_MODULE(xml2enc) = {
- STANDARD20_MODULE_STUFF,
- xml2enc_config,
- xml2enc_merge,
-@@ -623,6 +625,7 @@ module AP_MODULE_DECLARE_DATA xml2enc_module = {
- xml2enc_cmds,
- xml2enc_hooks
- };
-+
- APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(xml2enc, XML2ENC, int, preprocess,
- (ap_filter_t *f, char** bufp, apr_size_t* bytesp),
- (f, bufp, bytesp), OK, DECLINED)
-diff --git a/modules/loggers/mod_log_config.c b/modules/loggers/mod_log_config.c
-index caea1f3..026a6cf 100644
---- a/modules/loggers/mod_log_config.c
-+++ b/modules/loggers/mod_log_config.c
-@@ -263,6 +263,8 @@ typedef struct {
- void *log_writer;
- char *condition_var;
- ap_expr_info_t *condition_expr;
-+ /** place of definition or NULL if already checked */
-+ const ap_directive_t *directive;
- } config_log_state;
-
- /*
-@@ -1271,6 +1273,7 @@ static const char *add_custom_log(cmd_parms *cmd, void *dummy, const char *fn,
-
- cls->fname = fn;
- cls->format_string = fmt;
-+ cls->directive = cmd->directive;
- if (fmt == NULL) {
- cls->format = NULL;
- }
-@@ -1678,9 +1681,59 @@ static int log_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp)
- return OK;
- }
-
-+static int check_log_dir(apr_pool_t *p, server_rec *s, config_log_state *cls)
-+{
-+ if (!cls->fname || cls->fname[0] == '|' || !cls->directive) {
-+ return OK;
-+ }
-+ else {
-+ char *abs = ap_server_root_relative(p, cls->fname);
-+ char *dir = ap_make_dirstr_parent(p, abs);
-+ apr_finfo_t finfo;
-+ const ap_directive_t *directive = cls->directive;
-+ apr_status_t rv = apr_stat(&finfo, dir, APR_FINFO_TYPE, p);
-+ cls->directive = NULL; /* Don't check this config_log_state again */
-+ if (rv == APR_SUCCESS && finfo.filetype != APR_DIR)
-+ rv = APR_ENOTDIR;
-+ if (rv != APR_SUCCESS) {
-+ ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_EMERG, rv, s,
-+ APLOGNO(02297)
-+ "Cannot access directory '%s' for log file '%s' "
-+ "defined at %s:%d", dir, cls->fname,
-+ directive->filename, directive->line_num);
-+ return !OK;
-+ }
-+ }
-+ return OK;
-+}
-+
-+static int log_check_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
-+{
-+ int rv = OK;
-+ while (s) {
-+ multi_log_state *mls = ap_get_module_config(s->module_config,
-+ &log_config_module);
-+ /*
-+ * We don't need to check mls->server_config_logs because it just
-+ * points to the parent server's mls->config_logs.
-+ */
-+ apr_array_header_t *log_list = mls->config_logs;
-+ config_log_state *clsarray = (config_log_state *) log_list->elts;
-+ int i;
-+ for (i = 0; i < log_list->nelts; ++i) {
-+ if (check_log_dir(ptemp, s, &clsarray[i]) != OK)
-+ rv = !OK;
-+ }
-+
-+ s = s->next;
-+ }
-+ return rv;
-+}
-+
- static void register_hooks(apr_pool_t *p)
- {
- ap_hook_pre_config(log_pre_config,NULL,NULL,APR_HOOK_REALLY_FIRST);
-+ ap_hook_check_config(log_check_config,NULL,NULL,APR_HOOK_MIDDLE);
- ap_hook_child_init(init_child,NULL,NULL,APR_HOOK_MIDDLE);
- ap_hook_open_logs(init_config_log,NULL,NULL,APR_HOOK_MIDDLE);
- ap_hook_log_transaction(multi_log_transaction,NULL,NULL,APR_HOOK_MIDDLE);
-diff --git a/modules/lua/lua_request.c b/modules/lua/lua_request.c
-index 614f81d..91bd3b7 100644
---- a/modules/lua/lua_request.c
-+++ b/modules/lua/lua_request.c
-@@ -82,7 +82,7 @@ void ap_lua_rstack_dump(lua_State *L, request_rec *r, const char *msg)
- }
- default:{
- ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
-- "%d: unkown: -[%s]-", i, lua_typename(L, i));
-+ "%d: unknown: -[%s]-", i, lua_typename(L, i));
- break;
- }
- }
-diff --git a/modules/lua/lua_vmprep.c b/modules/lua/lua_vmprep.c
-index 308ffe6..7c383ca 100644
---- a/modules/lua/lua_vmprep.c
-+++ b/modules/lua/lua_vmprep.c
-@@ -84,7 +84,7 @@ static void pstack_dump(lua_State *L, apr_pool_t *r, int level,
- }
- default:{
- ap_log_perror(APLOG_MARK, level, 0, r,
-- "%d: unkown: [%s]", i, lua_typename(L, i));
-+ "%d: unknown: [%s]", i, lua_typename(L, i));
- break;
- }
- }
-diff --git a/modules/mappers/mod_dir.c b/modules/mappers/mod_dir.c
-index 4386dba..52d0273 100644
---- a/modules/mappers/mod_dir.c
-+++ b/modules/mappers/mod_dir.c
-@@ -68,6 +68,7 @@ static const char *add_index(cmd_parms *cmd, void *dummy, const char *arg)
- const char *ww = ap_getword_conf(cmd->temp_pool, &tt);
- if (ww == NULL || !ww[0]) {
- /* "disabled" is first, and alone */
-+ apr_array_clear(d->index_names);
- break;
- }
- }
-diff --git a/modules/metadata/mod_remoteip.c b/modules/metadata/mod_remoteip.c
-index d2858cc..60d7a1f 100644
---- a/modules/metadata/mod_remoteip.c
-+++ b/modules/metadata/mod_remoteip.c
-@@ -397,7 +397,7 @@ static int remoteip_modify_request(request_rec *r)
- r->useragent_addr = req->useragent_addr;
- r->useragent_ip = req->useragent_ip;
-
-- ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
-+ ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
- req->proxy_ips
- ? "Using %s as client's IP by proxies %s"
- : "Using %s as client's IP by internal proxies",
-diff --git a/modules/proxy/ajp_header.c b/modules/proxy/ajp_header.c
-index e7e1696..dc86def 100644
---- a/modules/proxy/ajp_header.c
-+++ b/modules/proxy/ajp_header.c
-@@ -256,7 +256,7 @@ static apr_status_t ajp_marshal_into_msgb(ajp_msg_t *msg,
-
- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(00968)
- "ajp_marshal_into_msgb: "
-- "Error appending the message begining");
-+ "Error appending the message beginning");
- return APR_EGENERAL;
- }
-
-diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c
-index ede29a1..f9a8009 100644
---- a/modules/proxy/mod_proxy.c
-+++ b/modules/proxy/mod_proxy.c
-@@ -387,6 +387,14 @@ static const char *set_balancer_param(proxy_server_conf *conf,
- return "growth must be between 1 and 100";
- balancer->growth = ival;
- }
-+ else if (!strcasecmp(key, "forcerecovery")) {
-+ if (!strcasecmp(val, "on"))
-+ balancer->s->forcerecovery = 1;
-+ else if (!strcasecmp(val, "off"))
-+ balancer->s->forcerecovery = 0;
-+ else
-+ return "forcerecovery must be On|Off";
-+ }
- else {
- return "unknown Balancer parameter";
- }
-@@ -2466,6 +2474,7 @@ static void child_init(apr_pool_t *p, server_rec *s)
- /* Disable address cache for generic reverse worker */
- reverse->s->is_address_reusable = 0;
- }
-+ conf->reverse = reverse;
- s = s->next;
- }
- }
-diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h
-index 5348d02..5ad91fb 100644
---- a/modules/proxy/mod_proxy.h
-+++ b/modules/proxy/mod_proxy.h
-@@ -424,6 +424,7 @@ typedef struct {
- unsigned int need_reset:1;
- unsigned int vhosted:1;
- unsigned int inactive:1;
-+ unsigned int forcerecovery:1;
- } proxy_balancer_shared;
-
- #define ALIGNED_PROXY_BALANCER_SHARED_SIZE (APR_ALIGN_DEFAULT(sizeof(proxy_balancer_shared)))
-diff --git a/modules/proxy/mod_proxy_balancer.c b/modules/proxy/mod_proxy_balancer.c
-index 08417d6..96e0901 100644
---- a/modules/proxy/mod_proxy_balancer.c
-+++ b/modules/proxy/mod_proxy_balancer.c
-@@ -423,7 +423,7 @@ static void force_recovery(proxy_balancer *balancer, server_rec *s)
- }
- }
- }
-- if (!ok) {
-+ if (!ok && balancer->s->forcerecovery) {
- /* If all workers are in error state force the recovery.
- */
- worker = (proxy_worker **)balancer->workers->elts;
-@@ -624,8 +624,9 @@ static int proxy_balancer_post_request(proxy_worker *worker,
- int val = ((int *)balancer->errstatuses->elts)[i];
- if (r->status == val) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(01174)
-- "%s: Forcing recovery for worker (%s), "
-- "failonstatus %d",
-+ "%s: Forcing worker (%s) into error state "
-+ "due to status code %d matching 'failonstatus' "
-+ "balancer parameter",
- balancer->s->name, worker->s->name, val);
- worker->s->status |= PROXY_WORKER_IN_ERROR;
- worker->s->error_time = apr_time_now();
-diff --git a/modules/proxy/proxy_util.c b/modules/proxy/proxy_util.c
-index 5821aa9..fe2ac43 100644
---- a/modules/proxy/proxy_util.c
-+++ b/modules/proxy/proxy_util.c
-@@ -1164,6 +1164,8 @@ PROXY_DECLARE(char *) ap_proxy_define_balancer(apr_pool_t *p,
- bshared->hash.fnv = ap_proxy_hashfunc(bshared->name, PROXY_HASHFUNC_FNV);
- (*balancer)->hash = bshared->hash;
-
-+ bshared->forcerecovery = 1;
-+
- /* Retrieve a UUID and store the nonce for the lifetime of
- * the process. */
- apr_uuid_get(&uuid);
-diff --git a/modules/session/mod_session.c b/modules/session/mod_session.c
-index 3e1275b..e053619 100644
---- a/modules/session/mod_session.c
-+++ b/modules/session/mod_session.c
-@@ -303,11 +303,11 @@ static int identity_concat(char *buffer, const char *key, const char *val)
- *slider = '&';
- slider++;
- }
-- ap_escape_path_segment_buffer(slider, key);
-+ ap_escape_urlencoded_buffer(slider, key);
- slider += strlen(slider);
- *slider = '=';
- slider++;
-- ap_escape_path_segment_buffer(slider, val);
-+ ap_escape_urlencoded_buffer(slider, val);
- return 1;
- }
-
-@@ -384,7 +384,7 @@ static apr_status_t session_identity_decode(request_rec * r, session_rec * z)
- if (!val || !*val) {
- apr_table_unset(z->entries, key);
- }
-- else if (!ap_unescape_all(key) && !ap_unescape_all(val)) {
-+ else if (!ap_unescape_urlencoded(key) && !ap_unescape_urlencoded(val)) {
- if (!strcmp(SESSION_EXPIRY, key)) {
- z->expiry = (apr_time_t) apr_atoi64(val);
- }
-diff --git a/modules/slotmem/mod_slotmem_shm.c b/modules/slotmem/mod_slotmem_shm.c
-index cd6ead2..b3a5ddc 100644
---- a/modules/slotmem/mod_slotmem_shm.c
-+++ b/modules/slotmem/mod_slotmem_shm.c
-@@ -124,14 +124,21 @@ static apr_status_t unixd_set_shm_perms(const char *fname)
- * /abs_name : $abs_name
- *
- */
--static const char *store_filename(apr_pool_t *pool, const char *slotmemname)
-+
-+#define DEFAULT_SLOTMEM_PREFIX DEFAULT_REL_RUNTIMEDIR "/slotmem-shm-"
-+
-+#define DEFAULT_SLOTMEM_SUFFIX ".shm"
-+
-+static const char *slotmem_filename(apr_pool_t *pool, const char *slotmemname)
- {
- const char *fname;
-- if (strcasecmp(slotmemname, "none") == 0) {
-+ if (!slotmemname || strcasecmp(slotmemname, "none") == 0) {
- return NULL;
- }
- else if (slotmemname[0] != '/') {
-- fname = ap_server_root_relative(pool, slotmemname);
-+ const char *path = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX, slotmemname,
-+ DEFAULT_SLOTMEM_SUFFIX, NULL);
-+ fname = ap_server_root_relative(pool, path);
- }
- else {
- fname = slotmemname;
-@@ -146,7 +153,7 @@ static void store_slotmem(ap_slotmem_instance_t *slotmem)
- apr_size_t nbytes;
- const char *storename;
-
-- storename = store_filename(slotmem->gpool, slotmem->name);
-+ storename = slotmem_filename(slotmem->gpool, slotmem->name);
-
- if (storename) {
- rv = apr_file_open(&fp, storename, APR_CREATE | APR_READ | APR_WRITE,
-@@ -175,7 +182,7 @@ static void restore_slotmem(void *ptr, const char *name, apr_size_t size,
- apr_size_t nbytes = size;
- apr_status_t rv;
-
-- storename = store_filename(pool, name);
-+ storename = slotmem_filename(pool, name);
-
- if (storename) {
- rv = apr_file_open(&fp, storename, APR_READ | APR_WRITE, APR_OS_DEFAULT,
-@@ -252,7 +259,7 @@ static apr_status_t slotmem_create(ap_slotmem_instance_t **new,
- ap_slotmem_type_t type, apr_pool_t *pool)
- {
- /* void *slotmem = NULL; */
-- int fbased;
-+ int fbased = 1;
- char *ptr;
- sharedslotdesc_t desc;
- ap_slotmem_instance_t *res;
-@@ -267,14 +274,8 @@ static apr_status_t slotmem_create(ap_slotmem_instance_t **new,
- if (gpool == NULL) {
- return APR_ENOSHMAVAIL;
- }
-- if (name) {
-- if (name[0] != '/') {
-- fname = ap_server_root_relative(pool, name);
-- }
-- else {
-- fname = name;
-- }
--
-+ fname = slotmem_filename(pool, name);
-+ if (fname) {
- /* first try to attach to existing slotmem */
- if (next) {
- for (;;) {
-@@ -291,11 +292,11 @@ static apr_status_t slotmem_create(ap_slotmem_instance_t **new,
- }
- }
- else {
-+ fbased = 0;
- fname = "none";
- }
-
- /* first try to attach to existing shared memory */
-- fbased = (name != NULL);
- if (fbased) {
- rv = apr_shm_attach(&shm, fname, gpool);
- }
-@@ -395,15 +396,8 @@ static apr_status_t slotmem_attach(ap_slotmem_instance_t **new,
- if (gpool == NULL) {
- return APR_ENOSHMAVAIL;
- }
-- if (name) {
-- if (name[0] == ':') {
-- fname = name;
-- }
-- else {
-- fname = ap_server_root_relative(pool, name);
-- }
-- }
-- else {
-+ fname = slotmem_filename(pool, name);
-+ if (!fname) {
- return APR_ENOSHMAVAIL;
- }
-
-diff --git a/modules/ssl/ssl_util_ssl.c b/modules/ssl/ssl_util_ssl.c
-index 13362be..48b561d 100644
---- a/modules/ssl/ssl_util_ssl.c
-+++ b/modules/ssl/ssl_util_ssl.c
-@@ -325,7 +325,7 @@ BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids)
- }
-
- if (names)
-- sk_GENERAL_NAME_free(names);
-+ sk_GENERAL_NAME_pop_free(names, GENERAL_NAME_free);
-
- /* Second, the CN-IDs (commonName attributes in the subject DN) */
- subj = X509_get_subject_name(x509);
-diff --git a/server/config.c b/server/config.c
-index 96ab9c9..7585704 100644
---- a/server/config.c
-+++ b/server/config.c
-@@ -59,6 +59,7 @@
-
- AP_DECLARE_DATA const char *ap_server_argv0 = NULL;
- AP_DECLARE_DATA const char *ap_server_root = NULL;
-+AP_DECLARE_DATA const char *ap_runtime_dir = NULL;
- AP_DECLARE_DATA server_rec *ap_server_conf = NULL;
- AP_DECLARE_DATA apr_pool_t *ap_pglobal = NULL;
-
-@@ -1560,6 +1561,25 @@ AP_DECLARE(char *) ap_server_root_relative(apr_pool_t *p, const char *file)
- }
- }
-
-+AP_DECLARE(char *) ap_runtime_dir_relative(apr_pool_t *p, const char *file)
-+{
-+ char *newpath = NULL;
-+ apr_status_t rv;
-+ const char *runtime_dir = ap_runtime_dir ? ap_runtime_dir : ap_server_root_relative(p, DEFAULT_REL_RUNTIMEDIR);
-+
-+ rv = apr_filepath_merge(&newpath, runtime_dir, file,
-+ APR_FILEPATH_TRUENAME, p);
-+ if (newpath && (rv == APR_SUCCESS || APR_STATUS_IS_EPATHWILD(rv)
-+ || APR_STATUS_IS_ENOENT(rv)
-+ || APR_STATUS_IS_ENOTDIR(rv))) {
-+ return newpath;
-+ }
-+ else {
-+ return NULL;
-+ }
-+}
-+
-+
- AP_DECLARE(const char *) ap_soak_end_container(cmd_parms *cmd, char *directive)
- {
- struct ap_varbuf vb;
-diff --git a/server/core.c b/server/core.c
-index e96eaa3..541f6e8 100644
---- a/server/core.c
-+++ b/server/core.c
-@@ -247,7 +247,7 @@ static void *merge_core_dir_configs(apr_pool_t *a, void *basev, void *newv)
- conf->override_opts = new->override_opts;
- }
-
-- if (conf->override_list == NULL) {
-+ if (new->override_list != NULL) {
- conf->override_list = new->override_list;
- }
-
-@@ -274,7 +274,7 @@ static void *merge_core_dir_configs(apr_pool_t *a, void *basev, void *newv)
- conf->hostname_lookups = new->hostname_lookups;
- }
-
-- if (new->content_md5 == AP_CONTENT_MD5_UNSET) {
-+ if (new->content_md5 != AP_CONTENT_MD5_UNSET) {
- conf->content_md5 = new->content_md5;
- }
-
-@@ -314,8 +314,6 @@ static void *merge_core_dir_configs(apr_pool_t *a, void *basev, void *newv)
-
- if (new->limit_xml_body != AP_LIMIT_UNSET)
- conf->limit_xml_body = new->limit_xml_body;
-- else
-- conf->limit_xml_body = base->limit_xml_body;
-
- if (!conf->sec_file) {
- conf->sec_file = new->sec_file;
-@@ -1661,28 +1659,45 @@ static const char *set_override_list(cmd_parms *cmd, void *d_, int argc, char *c
- /* Throw a warning if we're in <Location> or <Files> */
- if (ap_check_cmd_context(cmd, NOT_IN_LOCATION | NOT_IN_FILES)) {
- ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server, APLOGNO(00115)
-- "Useless use of AllowOverrideList in line %d of %s.",
-- cmd->directive->line_num, cmd->directive->filename);
-+ "Useless use of AllowOverrideList at %s:%d",
-+ cmd->directive->filename, cmd->directive->line_num);
- }
- if ((err = ap_check_cmd_context(cmd, NOT_IN_HTACCESS)) != NULL)
- return err;
-
-- d->override_list = apr_table_make(cmd->pool, 1);
-+ d->override_list = apr_table_make(cmd->pool, argc);
-
- for (i=0;i<argc;i++){
- if (!strcasecmp(argv[i], "None")) {
-+ if (argc != 1) {
-+ return "'None' not allowed with other directives in "
-+ "AllowOverrideList";
-+ }
- return NULL;
- }
- else {
- const command_rec *result = NULL;
- module *mod = ap_top_module;
- result = ap_find_command_in_modules(argv[i], &mod);
-- if (result)
-+ if (result == NULL) {
-+ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server,
-+ APLOGNO(00116) "Discarding unrecognized "
-+ "directive `%s' in AllowOverrideList at %s:%d",
-+ argv[i], cmd->directive->filename,
-+ cmd->directive->line_num);
-+ continue;
-+ }
-+ else if ((result->req_override & (OR_ALL|ACCESS_CONF)) == 0) {
-+ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server,
-+ APLOGNO(02304) "Discarding directive `%s' not "
-+ "allowed in AllowOverrideList at %s:%d",
-+ argv[i], cmd->directive->filename,
-+ cmd->directive->line_num);
-+ continue;
-+ }
-+ else {
- apr_table_set(d->override_list, argv[i], "1");
-- else
-- ap_log_error(APLOG_MARK, APLOG_WARNING, 0, cmd->server, APLOGNO(00116)
-- "Discarding unrecognized directive `%s' in AllowOverrideList.",
-- argv[i]);
-+ }
- }
- }
-
-@@ -2775,6 +2790,24 @@ static const char *set_server_root(cmd_parms *cmd, void *dummy,
- return NULL;
- }
-
-+static const char *set_runtime_dir(cmd_parms *cmd, void *dummy, const char *arg)
-+{
-+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
-+
-+ if (err != NULL) {
-+ return err;
-+ }
-+
-+ if ((apr_filepath_merge((char**)&ap_runtime_dir, NULL,
-+ ap_server_root_relative(cmd->pool, arg),
-+ APR_FILEPATH_TRUENAME, cmd->pool) != APR_SUCCESS)
-+ || !ap_is_directory(cmd->temp_pool, ap_runtime_dir)) {
-+ return "DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot";
-+ }
-+
-+ return NULL;
-+}
-+
- static const char *set_timeout(cmd_parms *cmd, void *dummy, const char *arg)
- {
- const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE);
-@@ -3928,6 +3961,8 @@ AP_INIT_TAKE1("ServerSignature", set_signature_flag, NULL, OR_ALL,
- "En-/disable server signature (on|off|email)"),
- AP_INIT_TAKE1("ServerRoot", set_server_root, NULL, RSRC_CONF | EXEC_ON_READ,
- "Common directory of server-related files (logs, confs, etc.)"),
-+AP_INIT_TAKE1("DefaultRuntimeDir", set_runtime_dir, NULL, RSRC_CONF | EXEC_ON_READ,
-+ "Common directory for run-time files (shared memory, locks, etc.)"),
- AP_INIT_TAKE1("ErrorLog", set_server_string_slot,
- (void *)APR_OFFSETOF(server_rec, error_fname), RSRC_CONF,
- "The filename of the error log"),
-@@ -4059,7 +4094,7 @@ AP_INIT_TAKE1("MaxConnectionsPerChild", ap_mpm_set_max_requests, NULL, RSRC_CONF
- AP_INIT_TAKE1("CoreDumpDirectory", ap_mpm_set_coredumpdir, NULL, RSRC_CONF,
- "The location of the directory Apache changes to before dumping core"),
- AP_INIT_TAKE1("MaxMemFree", ap_mpm_set_max_mem_free, NULL, RSRC_CONF,
-- "Maximum number of 1k blocks a particular childs allocator may hold."),
-+ "Maximum number of 1k blocks a particular child's allocator may hold."),
- AP_INIT_TAKE1("ThreadStackSize", ap_mpm_set_thread_stacksize, NULL, RSRC_CONF,
- "Size in bytes of stack used by threads handling client connections"),
- #if AP_ENABLE_EXCEPTION_HOOK
-diff --git a/server/listen.c b/server/listen.c
-index a4935aa..a85095d 100644
---- a/server/listen.c
-+++ b/server/listen.c
-@@ -238,7 +238,7 @@ static apr_status_t close_listeners_on_exec(void *v)
-
- static const char *alloc_listener(process_rec *process, char *addr,
- apr_port_t port, const char* proto,
-- void *dummy)
-+ void *slave)
- {
- ap_listen_rec **walk, *last;
- apr_status_t status;
-@@ -273,7 +273,7 @@ static const char *alloc_listener(process_rec *process, char *addr,
- }
-
- if (found_listener) {
-- if (ap_listeners->slave != dummy) {
-+ if (ap_listeners->slave != slave) {
- return "Cannot define a slave on the same IP:port as a Listener";
- }
- return NULL;
-@@ -333,7 +333,7 @@ static const char *alloc_listener(process_rec *process, char *addr,
- last->next = new;
- last = new;
- }
-- new->slave = dummy;
-+ new->slave = slave;
- }
-
- return NULL;
-@@ -612,10 +612,6 @@ AP_DECLARE(void) ap_listen_pre_config(void)
- ap_listenbacklog = DEFAULT_LISTENBACKLOG;
- }
-
--/* Hack: populate an extra field
-- * When this gets called from a Listen directive, dummy is null.
-- * So we can use non-null dummy to pass a data pointer without conflict
-- */
- AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy,
- int argc, char *const argv[])
- {
-@@ -662,7 +658,7 @@ AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy,
- ap_str_tolower(proto);
- }
-
-- return alloc_listener(cmd->server->process, host, port, proto, dummy);
-+ return alloc_listener(cmd->server->process, host, port, proto, NULL);
- }
-
- AP_DECLARE_NONSTD(const char *) ap_set_listenbacklog(cmd_parms *cmd,
-diff --git a/server/mpm_common.c b/server/mpm_common.c
-index 0cd65e5..4448ec6 100644
---- a/server/mpm_common.c
-+++ b/server/mpm_common.c
-@@ -139,13 +139,13 @@ static struct mpm_gen_info_head_t *geninfo, *unused_geninfo;
- static int gen_head_init; /* yuck */
-
- /* variables representing config directives implemented here */
--const char *ap_pid_fname;
--int ap_max_requests_per_child;
--char ap_coredump_dir[MAX_STRING_LEN];
--int ap_coredumpdir_configured;
--int ap_graceful_shutdown_timeout;
-+AP_DECLARE_DATA const char *ap_pid_fname;
-+AP_DECLARE_DATA int ap_max_requests_per_child;
-+AP_DECLARE_DATA char ap_coredump_dir[MAX_STRING_LEN];
-+AP_DECLARE_DATA int ap_coredumpdir_configured;
-+AP_DECLARE_DATA int ap_graceful_shutdown_timeout;
- AP_DECLARE_DATA apr_uint32_t ap_max_mem_free;
--apr_size_t ap_thread_stacksize;
-+AP_DECLARE_DATA apr_size_t ap_thread_stacksize;
-
- #define ALLOCATOR_MAX_FREE_DEFAULT (2048*1024)
-
-@@ -170,8 +170,9 @@ void mpm_common_pre_config(apr_pool_t *pconf)
- #endif
- static int wait_or_timeout_counter;
-
--void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
-- apr_pool_t *p, server_rec *s)
-+AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode,
-+ apr_proc_t *ret, apr_pool_t *p,
-+ server_rec *s)
- {
- apr_status_t rv;
-
-@@ -356,8 +357,9 @@ const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
- return NULL;
- }
-
--const char * ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
-- const char *arg)
-+AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd,
-+ void *dummy,
-+ const char *arg)
- {
- const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
- if (err != NULL) {
-diff --git a/server/mpm_unix.c b/server/mpm_unix.c
-index 6b1d6ee..87df8f5 100644
---- a/server/mpm_unix.c
-+++ b/server/mpm_unix.c
-@@ -73,7 +73,7 @@ typedef struct extra_process_t {
-
- static extra_process_t *extras;
-
--void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen)
-+AP_DECLARE(void) ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen)
- {
- extra_process_t *p = (extra_process_t *)ap_malloc(sizeof(extra_process_t));
-
-@@ -83,7 +83,7 @@ void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen)
- extras = p;
- }
-
--int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *gen)
-+AP_DECLARE(int) ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen)
- {
- extra_process_t *cur = extras;
- extra_process_t *prev = NULL;
-@@ -100,7 +100,7 @@ int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *gen)
- else {
- extras = cur->next;
- }
-- *gen = cur->gen;
-+ *old_gen = cur->gen;
- free(cur);
- return 1; /* found */
- }
-@@ -173,8 +173,8 @@ static int reclaim_one_pid(pid_t pid, action_t action)
- return 0;
- }
-
--void ap_reclaim_child_processes(int terminate,
-- ap_reclaim_callback_fn_t *mpm_callback)
-+AP_DECLARE(void) ap_reclaim_child_processes(int terminate,
-+ ap_reclaim_callback_fn_t *mpm_callback)
- {
- apr_time_t waittime = 1024 * 16;
- int i;
-@@ -270,7 +270,7 @@ void ap_reclaim_child_processes(int terminate,
- action_table[cur_action].action != GIVEUP);
- }
-
--void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback)
-+AP_DECLARE(void) ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback)
- {
- int i;
- extra_process_t *cur_extra;
-@@ -313,7 +313,7 @@ void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback)
- * the pid is a member of the current process group; either using
- * apr_proc_wait(), where waitpid() guarantees to fail for non-child
- * processes; or by using getpgid() directly, if available. */
--apr_status_t ap_mpm_safe_kill(pid_t pid, int sig)
-+AP_DECLARE(apr_status_t) ap_mpm_safe_kill(pid_t pid, int sig)
- {
- #ifndef HAVE_GETPGID
- apr_proc_t proc;
-@@ -368,7 +368,8 @@ apr_status_t ap_mpm_safe_kill(pid_t pid, int sig)
- }
-
-
--int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status)
-+AP_DECLARE(int) ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why,
-+ int status)
- {
- int signum = status;
- const char *sigdesc;
-@@ -569,6 +570,8 @@ static apr_status_t dummy_connection(ap_pod_t *pod)
-
- ap_log_error(APLOG_MARK, log_level, rv, ap_server_conf, APLOGNO(00056)
- "connect to listener on %pI", lp->bind_addr);
-+ apr_pool_destroy(p);
-+ return rv;
- }
-
- /* Create the request string. We include a User-Agent so that
-@@ -867,13 +870,14 @@ static void sig_coredump(int sig)
- */
- }
-
--apr_status_t ap_fatal_signal_child_setup(server_rec *s)
-+AP_DECLARE(apr_status_t) ap_fatal_signal_child_setup(server_rec *s)
- {
- my_pid = getpid();
- return APR_SUCCESS;
- }
-
--apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *in_pconf)
-+AP_DECLARE(apr_status_t) ap_fatal_signal_setup(server_rec *s,
-+ apr_pool_t *in_pconf)
- {
- #ifndef NO_USE_SIGACTION
- struct sigaction sa;
-diff --git a/server/request.c b/server/request.c
-index 37cffdd..c2fdd89 100644
---- a/server/request.c
-+++ b/server/request.c
-@@ -1094,9 +1094,9 @@ AP_DECLARE(int) ap_directory_walk(request_rec *r)
- }
- else if (APR_STATUS_IS_EACCES(rv)) {
- ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(00035)
-- "access to %s denied because search "
-- "permissions are missing on a component "
-- "of the path", r->uri);
-+ "access to %s denied (filesystem path '%s') "
-+ "because search permissions are missing on a "
-+ "component of the path", r->uri, r->filename);
- return r->status = HTTP_FORBIDDEN;
- }
- else if ((rv != APR_SUCCESS && rv != APR_INCOMPLETE)
-@@ -1105,7 +1105,8 @@ AP_DECLARE(int) ap_directory_walk(request_rec *r)
- * rather than assume not found.
- */
- ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(00036)
-- "access to %s failed", r->uri);
-+ "access to %s failed (filesystem path '%s')",
-+ r->uri, r->filename);
- return r->status = HTTP_FORBIDDEN;
- }
-
-diff --git a/server/scoreboard.c b/server/scoreboard.c
-index 4201995..344dc5a 100644
---- a/server/scoreboard.c
-+++ b/server/scoreboard.c
-@@ -143,7 +143,7 @@ AP_DECLARE(int) ap_calc_scoreboard_size(void)
- return scoreboard_size;
- }
-
--void ap_init_scoreboard(void *shared_score)
-+AP_DECLARE(void) ap_init_scoreboard(void *shared_score)
- {
- char *more_storage;
- int i;
-@@ -251,7 +251,8 @@ static apr_status_t open_scoreboard(apr_pool_t *pconf)
- /* If detach is non-zero, this is a separate child process,
- * if zero, it is a forked child.
- */
--apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached)
-+AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm,
-+ int detached)
- {
- #if APR_HAS_SHARED_MEMORY
- if (!detached) {
-diff --git a/server/util_script.c b/server/util_script.c
-index 3f7d847..18c4aea 100644
---- a/server/util_script.c
-+++ b/server/util_script.c
-@@ -682,6 +682,7 @@ static int getsfunc_BRIGADE(char *buf, int len, void *arg)
- rv = apr_bucket_read(e, &bucket_data, &bucket_data_len,
- APR_BLOCK_READ);
- if (rv != APR_SUCCESS || (bucket_data_len == 0)) {
-+ *dst = '\0';
- return APR_STATUS_IS_TIMEUP(rv) ? -1 : 0;
- }
- src = bucket_data;
-@@ -738,8 +739,10 @@ static int getsfunc_STRING(char *w, int len, void *pvastrs)
- const char *p;
- int t;
-
-- if (!strs->curpos || !*strs->curpos)
-+ if (!strs->curpos || !*strs->curpos) {
-+ w[0] = '\0';
- return 0;
-+ }
- p = ap_strchr_c(strs->curpos, '\n');
- if (p)
- ++p;
-diff --git a/include/ap_config.h b/include/ap_config.h
-index 7c6a795..944b16a 100644
---- a/include/ap_config.h
-+++ b/include/ap_config.h
-@@ -148,7 +148,7 @@
- #define AP_NONBLOCK_WHEN_MULTI_LISTEN 1
- #endif
-
--#if AP_ENABLE_DTRACE && HAVE_SYS_SDT_H
-+#if defined(AP_ENABLE_DTRACE) && HAVE_SYS_SDT_H
- #include <sys/sdt.h>
- #else
- #undef _DTRACE_VERSION
-@@ -165,11 +165,14 @@
- #define AP_HAVE_RELIABLE_PIPED_LOGS TRUE
- #endif
-
-+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-+#define AP_HAVE_C99
-+#endif
-+
- /* Presume that the compiler supports C99-style designated
- * initializers if using GCC (but not G++), or for any other compiler
- * which claims C99 support. */
--#if (defined(__GNUC__) && !defined(__cplusplus)) \
-- || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L)
-+#if (defined(__GNUC__) && !defined(__cplusplus)) || defined(AP_HAVE_C99)
- #define AP_HAVE_DESIGNATED_INITIALIZER
- #endif
-
-diff --git a/include/ap_mmn.h b/include/ap_mmn.h
-index 31bfbc4..3487067 100644
---- a/include/ap_mmn.h
-+++ b/include/ap_mmn.h
-@@ -390,6 +390,9 @@
- * move core_net rec definition to http_core.h;
- * add insert_network_bucket hook, AP_DECLINED
- * 20120211.0 (2.4.1-dev) Change re_nsub in ap_regex_t from apr_size_t to int.
-+ * 20120211.1 (2.4.2-dev) Add AP_HAVE_C99
-+ * 20120211.2 (2.4.2-dev) Add ap_runtime_dir_relative
-+ * 20120211.3 (2.4.2-dev) Add forcerecovery to proxy_balancer_shared struct
- */
-
- #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
-@@ -397,7 +400,7 @@
- #ifndef MODULE_MAGIC_NUMBER_MAJOR
- #define MODULE_MAGIC_NUMBER_MAJOR 20120211
- #endif
--#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
-+#define MODULE_MAGIC_NUMBER_MINOR 3 /* 0...n */
-
- /**
- * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
-diff --git a/include/ap_mpm.h b/include/ap_mpm.h
-index b061c0a..71f8f47 100644
---- a/include/ap_mpm.h
-+++ b/include/ap_mpm.h
-@@ -218,7 +218,7 @@ extern void moncontrol(int);
- #define AP_MONCONTROL(x)
- #endif
-
--#if AP_ENABLE_EXCEPTION_HOOK
-+#ifdef AP_ENABLE_EXCEPTION_HOOK
- typedef struct ap_exception_info_t {
- int sig;
- pid_t pid;
-diff --git a/include/http_config.h b/include/http_config.h
-index 951d643..617ab2a 100644
---- a/include/http_config.h
-+++ b/include/http_config.h
-@@ -706,6 +706,14 @@ AP_DECLARE_NONSTD(const char *) ap_set_deprecated(cmd_parms *cmd,
- */
- AP_DECLARE(char *) ap_server_root_relative(apr_pool_t *p, const char *fname);
-
-+/**
-+ * Compute the name of a run-time file (e.g., shared memory "file") relative
-+ * to the appropriate run-time directory. Absolute paths are returned as-is.
-+ * The run-time directory is configured via the DefaultRuntimeDir directive or
-+ * at build time.
-+ */
-+AP_DECLARE(char *) ap_runtime_dir_relative(apr_pool_t *p, const char *fname);
-+
- /* Finally, the hook for dynamically loading modules in... */
-
- /**
-diff --git a/include/http_log.h b/include/http_log.h
-index 66ed59c..922500f 100644
---- a/include/http_log.h
-+++ b/include/http_log.h
-@@ -358,7 +358,7 @@ AP_DECLARE(void) ap_log_error(const char *file, int line, int module_index,
- int level, apr_status_t status,
- const server_rec *s, const char *fmt, ...);
- #else
--#if __STDC_VERSION__ >= 199901L
-+#ifdef AP_HAVE_C99
- /* need additional step to expand APLOG_MARK first */
- #define ap_log_error(...) ap_log_error__(__VA_ARGS__)
- /* need server_rec *sr = ... for the case if s is verbatim NULL */
-@@ -401,7 +401,7 @@ AP_DECLARE(void) ap_log_perror(const char *file, int line, int module_index,
- int level, apr_status_t status, apr_pool_t *p,
- const char *fmt, ...);
- #else
--#if __STDC_VERSION__ >= 199901L && defined(APLOG_MAX_LOGLEVEL)
-+#if defined(AP_HAVE_C99) && defined(APLOG_MAX_LOGLEVEL)
- /* need additional step to expand APLOG_MARK first */
- #define ap_log_perror(...) ap_log_perror__(__VA_ARGS__)
- #define ap_log_perror__(file, line, mi, level, status, p, ...) \
-@@ -443,7 +443,7 @@ AP_DECLARE(void) ap_log_rerror(const char *file, int line, int module_index,
- int level, apr_status_t status,
- const request_rec *r, const char *fmt, ...);
- #else
--#if __STDC_VERSION__ >= 199901L
-+#ifdef AP_HAVE_C99
- /* need additional step to expand APLOG_MARK first */
- #define ap_log_rerror(...) ap_log_rerror__(__VA_ARGS__)
- #define ap_log_rerror__(file, line, mi, level, status, r, ...) \
-@@ -487,7 +487,7 @@ AP_DECLARE(void) ap_log_cerror(const char *file, int line, int module_index,
- int level, apr_status_t status,
- const conn_rec *c, const char *fmt, ...);
- #else
--#if __STDC_VERSION__ >= 199901L
-+#ifdef AP_HAVE_C99
- /* need additional step to expand APLOG_MARK first */
- #define ap_log_cerror(...) ap_log_cerror__(__VA_ARGS__)
- #define ap_log_cerror__(file, line, mi, level, status, c, ...) \
-@@ -534,7 +534,7 @@ AP_DECLARE(void) ap_log_cserror(const char *file, int line, int module_index,
- const conn_rec *c, const server_rec *s,
- const char *fmt, ...);
- #else
--#if __STDC_VERSION__ >= 199901L
-+#ifdef AP_HAVE_C99
- /* need additional step to expand APLOG_MARK first */
- #define ap_log_cserror(...) ap_log_cserror__(__VA_ARGS__)
- #define ap_log_cserror__(file, line, mi, level, status, c, s, ...) \
-diff --git a/include/http_main.h b/include/http_main.h
-index 22192db..fa1ce85 100644
---- a/include/http_main.h
-+++ b/include/http_main.h
-@@ -43,6 +43,11 @@ extern "C" {
- AP_DECLARE_DATA extern const char *ap_server_argv0;
- /** The global server's ServerRoot */
- AP_DECLARE_DATA extern const char *ap_server_root;
-+/** The global server's DefaultRuntimeDir
-+ * This is not usable directly in the general case; use
-+ * ap_runtime_dir_relative() instead.
-+ */
-+AP_DECLARE_DATA extern const char *ap_runtime_dir;
- /** The global server's server_rec */
- AP_DECLARE_DATA extern server_rec *ap_server_conf;
- /** global pool, for access prior to creation of server_rec */
-diff --git a/include/mpm_common.h b/include/mpm_common.h
-index df33d79..99b1945 100644
---- a/include/mpm_common.h
-+++ b/include/mpm_common.h
-@@ -89,6 +89,7 @@ extern "C" {
- typedef void ap_reclaim_callback_fn_t(int childnum, pid_t pid,
- ap_generation_t gen);
-
-+#ifndef NETWARE
- /**
- * Make sure all child processes that have been spawned by the parent process
- * have died. This includes process registered as "other_children".
-@@ -102,8 +103,8 @@ typedef void ap_reclaim_callback_fn_t(int childnum, pid_t pid,
- * in the scoreboard as well as those currently registered via
- * ap_register_extra_mpm_process().
- */
--void ap_reclaim_child_processes(int terminate,
-- ap_reclaim_callback_fn_t *mpm_callback);
-+AP_DECLARE(void) ap_reclaim_child_processes(int terminate,
-+ ap_reclaim_callback_fn_t *mpm_callback);
-
- /**
- * Catch any child processes that have been spawned by the parent process
-@@ -115,7 +116,7 @@ void ap_reclaim_child_processes(int terminate,
- * in the scoreboard as well as those currently registered via
- * ap_register_extra_mpm_process().
- */
--void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback);
-+AP_DECLARE(void) ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback);
-
- /**
- * Tell ap_reclaim_child_processes() and ap_relieve_child_processes() about
-@@ -128,7 +129,7 @@ void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback);
- * ap_reclaim_child_processes(), remove it from the list of such processes
- * by calling ap_unregister_extra_mpm_process().
- */
--void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen);
-+AP_DECLARE(void) ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen);
-
- /**
- * Unregister an MPM child process which was previously registered by a
-@@ -138,12 +139,7 @@ void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen);
- * @param old_gen Set to the server generation of the process, if found.
- * @return 1 if the process was found and removed, 0 otherwise
- */
--int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen);
--
--/**
-- * Pool cleanup for end-generation hook implementation
-- */
--apr_status_t ap_mpm_end_gen_helper(void *unused);
-+AP_DECLARE(int) ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen);
-
- /**
- * Safely signal an MPM child process, if the process is in the
-@@ -154,7 +150,27 @@ apr_status_t ap_mpm_end_gen_helper(void *unused);
- * APR_EINVAL is returned if passed either an invalid (< 1) pid, or if
- * the pid is not in the current process group
- */
--apr_status_t ap_mpm_safe_kill(pid_t pid, int sig);
-+AP_DECLARE(apr_status_t) ap_mpm_safe_kill(pid_t pid, int sig);
-+
-+/**
-+ * Log why a child died to the error log, if the child died without the
-+ * parent signalling it.
-+ * @param pid The child that has died
-+ * @param why The return code of the child process
-+ * @param status The status returned from ap_wait_or_timeout
-+ * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate
-+ */
-+AP_DECLARE(int) ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status);
-+
-+AP_DECLARE(apr_status_t) ap_fatal_signal_setup(server_rec *s, apr_pool_t *in_pconf);
-+AP_DECLARE(apr_status_t) ap_fatal_signal_child_setup(server_rec *s);
-+#endif /* !NETWARE */
-+
-+/**
-+ * Pool cleanup for end-generation hook implementation
-+ * (core httpd function)
-+ */
-+apr_status_t ap_mpm_end_gen_helper(void *unused);
-
- /**
- * Run the monitor hook (once every ten calls), determine if any child
-@@ -166,18 +182,9 @@ apr_status_t ap_mpm_safe_kill(pid_t pid, int sig);
- * @param p The pool to allocate out of
- * @param s The server_rec to pass
- */
--void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
-- apr_pool_t *p, server_rec *s);
--
--/**
-- * Log why a child died to the error log, if the child died without the
-- * parent signalling it.
-- * @param pid The child that has died
-- * @param why The return code of the child process
-- * @param status The status returned from ap_wait_or_timeout
-- * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate
-- */
--int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status);
-+AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode,
-+ apr_proc_t *ret, apr_pool_t *p,
-+ server_rec *s);
-
- #if defined(TCP_NODELAY)
- /**
-@@ -289,14 +296,14 @@ AP_DECLARE(const char *) ap_check_mpm(void);
- * The maximum number of requests each child thread or
- * process handles before dying off
- */
--extern int ap_max_requests_per_child;
-+AP_DECLARE_DATA extern int ap_max_requests_per_child;
- const char *ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy,
- const char *arg);
-
- /**
- * The filename used to store the process id.
- */
--extern const char *ap_pid_fname;
-+AP_DECLARE_DATA extern const char *ap_pid_fname;
- const char *ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy,
- const char *arg);
- void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out);
-@@ -304,16 +311,16 @@ void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out);
- /*
- * The directory that the server changes directory to dump core.
- */
--extern char ap_coredump_dir[MAX_STRING_LEN];
--extern int ap_coredumpdir_configured;
-+AP_DECLARE_DATA extern char ap_coredump_dir[MAX_STRING_LEN];
-+AP_DECLARE_DATA extern int ap_coredumpdir_configured;
- const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
- const char *arg);
-
- /**
- * Set the timeout period for a graceful shutdown.
- */
--extern int ap_graceful_shutdown_timeout;
--const char *ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
-+AP_DECLARE_DATA extern int ap_graceful_shutdown_timeout;
-+AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
- const char *arg);
- #define AP_GRACEFUL_SHUTDOWN_TIMEOUT_COMMAND \
- AP_INIT_TAKE1("GracefulShutdownTimeout", ap_mpm_set_graceful_shutdown, NULL, \
-@@ -324,17 +331,14 @@ AP_INIT_TAKE1("GracefulShutdownTimeout", ap_mpm_set_graceful_shutdown, NULL, \
- int ap_signal_server(int *, apr_pool_t *);
- void ap_mpm_rewrite_args(process_rec *);
-
--extern AP_DECLARE_DATA apr_uint32_t ap_max_mem_free;
-+AP_DECLARE_DATA extern apr_uint32_t ap_max_mem_free;
- extern const char *ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy,
- const char *arg);
-
--extern apr_size_t ap_thread_stacksize;
-+AP_DECLARE_DATA extern apr_size_t ap_thread_stacksize;
- extern const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy,
- const char *arg);
-
--extern apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *pconf);
--extern apr_status_t ap_fatal_signal_child_setup(server_rec *s);
--
- /* core's implementation of child_status hook */
- extern void ap_core_child_status(server_rec *s, pid_t pid, ap_generation_t gen,
- int slot, mpm_child_status status);
-diff --git a/include/scoreboard.h b/include/scoreboard.h
-index 3145005..2fd2960 100644
---- a/include/scoreboard.h
-+++ b/include/scoreboard.h
-@@ -156,14 +156,21 @@ typedef struct {
-
- typedef struct ap_sb_handle_t ap_sb_handle_t;
-
-+/*
-+ * Creation and deletion (internal)
-+ */
-+int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t);
-+apr_status_t ap_cleanup_scoreboard(void *d);
-+
-+/*
-+ * APIs for MPMs and other modules
-+ */
- AP_DECLARE(int) ap_exists_scoreboard_image(void);
- AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r);
-
--int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t);
--apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached);
--void ap_init_scoreboard(void *shared_score);
-+AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached);
-+AP_DECLARE(void) ap_init_scoreboard(void *shared_score);
- AP_DECLARE(int) ap_calc_scoreboard_size(void);
--apr_status_t ap_cleanup_scoreboard(void *d);
-
- AP_DECLARE(void) ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t *p,
- int child_num, int thread_num);
diff --git a/debian/patches/series b/debian/patches/series
index f0baeec..f5dffe0 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,8 +6,6 @@ no_LD_LIBRARY_PATH.patch
suexec-CVE-2007-1742.patch
customize_apxs.patch
build_suexec-custom.patch
-pull_branch_2.4.x.patch
-fixes_from_upstream_trunk.patch
# The patch below must not be applied by quilt at extraction time. It depends
# on some script-fu to be executed before. Have a look
# to debian/rules' prepare-custom-suexec target.
--
Debian packaging for apache2 (Apache HTTPD 2.x)
More information about the Pkg-apache-commits
mailing list