Author: rjung
Date: Sun Dec 21 12:48:42 2014
New Revision: 1647133
URL: http://svn.apache.org/r1647133
Log:
Fix Apache config handling for new JkOptions controlling
collapsing of adjacent slashes.
This is now tested and should work as documented.
Modified:
tomcat/jk/trunk/native/apache-1.3/mod_jk.c
tomcat/jk/trunk/native/apache-2.0/mod_jk.c
Modified: tomcat/jk/trunk/native/apache-1.3/mod_jk.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/apache-1.3/mod_jk.c?rev=1647133&r1=1647132&r2=1647133&view=diff
==============================================================================
--- tomcat/jk/trunk/native/apache-1.3/mod_jk.c (original)
+++ tomcat/jk/trunk/native/apache-1.3/mod_jk.c Sun Dec 21 12:48:42 2014
@@ -2753,6 +2753,7 @@ static void *merge_jk_config(ap_pool * p
{
jk_server_conf_t *base = (jk_server_conf_t *) basev;
jk_server_conf_t *overrides = (jk_server_conf_t *) overridesv;
+ int mask = 0;
if (!overrides->log_file)
overrides->log_file = base->log_file;
@@ -2797,16 +2798,13 @@ static void *merge_jk_config(ap_pool * p
if (!overrides->key_size_indicator)
overrides->key_size_indicator = base->key_size_indicator;
-/* Don't simply accumulate bits in the JK_OPT_FWDURIMASK region, */
-/* because those are multi-bit values. */
+/* Don't simply accumulate bits in the JK_OPT_FWDURIMASK or
+ * JK_OPT_COLLAPSEMASK region, because those are multi-bit values. */
if (overrides->options & JK_OPT_FWDURIMASK)
- overrides->options |= (base->options & ~base->exclude_options) &
~JK_OPT_FWDURIMASK;
- else
- overrides->options |= (base->options & ~base->exclude_options);
+ mask |= JK_OPT_FWDURIMASK;
if (overrides->options & JK_OPT_COLLAPSEMASK)
- overrides->options |= (base->options & ~base->exclude_options) &
~JK_OPT_COLLAPSEMASK;
- else
- overrides->options |= (base->options & ~base->exclude_options);
+ mask |= JK_OPT_COLLAPSEMASK;
+ overrides->options |= (base->options & ~base->exclude_options) & ~mask;
if (base->envvars) {
if (overrides->envvars && overrides->envvars_has_own) {
@@ -3005,7 +3003,6 @@ static void jk_init(server_rec * s, ap_p
jk_server_conf_t *srvconf = (jk_server_conf_t
*)create_jk_config(p, srv);
sconf = (jk_server_conf_t *)merge_jk_config(p, sconf, srvconf);
ap_set_module_config(srv->module_config, &jk_module, sconf);
-
}
if (sconf && sconf->was_initialized == JK_FALSE) {
@@ -3027,8 +3024,22 @@ static void jk_init(server_rec * s, ap_p
uri_worker_map_switch(sconf->uw_map, sconf->log);
uri_worker_map_load(sconf->uw_map, sconf->log);
}
- if (conf->options & JK_OPT_COLLAPSEMASK)
- sconf->uw_map->collapse_slashes = conf->options &
JK_OPT_COLLAPSEMASK;
+ switch (sconf->options & JK_OPT_COLLAPSEMASK) {
+ case JK_OPT_COLLAPSEALL:
+ sconf->uw_map->collapse_slashes = JK_COLLAPSE_ALL;
+ break;
+ case JK_OPT_COLLAPSENONE:
+ sconf->uw_map->collapse_slashes = JK_COLLAPSE_NONE;
+ break;
+ case JK_OPT_COLLAPSEUNMOUNT:
+ sconf->uw_map->collapse_slashes = JK_COLLAPSE_UNMOUNT;
+ break;
+ default:
+ ap_log_error(APLOG_MARK, APLOG_WARNING, srv,
+ "Collapse slashes value %d ignored, setting
to %d",
+ sconf->options & JK_OPT_COLLAPSEMASK,
JK_COLLAPSE_DEFAULT);
+ sconf->uw_map->collapse_slashes = JK_COLLAPSE_DEFAULT;
+ }
}
else {
if (sconf->mountcopy == JK_TRUE) {
Modified: tomcat/jk/trunk/native/apache-2.0/mod_jk.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/apache-2.0/mod_jk.c?rev=1647133&r1=1647132&r2=1647133&view=diff
==============================================================================
--- tomcat/jk/trunk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/jk/trunk/native/apache-2.0/mod_jk.c Sun Dec 21 12:48:42 2014
@@ -2988,6 +2988,7 @@ static void *merge_jk_config(apr_pool_t
{
jk_server_conf_t *base = (jk_server_conf_t *) basev;
jk_server_conf_t *overrides = (jk_server_conf_t *) overridesv;
+ int mask = 0;
if (!overrides->log_file)
overrides->log_file = base->log_file;
@@ -3032,16 +3033,13 @@ static void *merge_jk_config(apr_pool_t
if (!overrides->key_size_indicator)
overrides->key_size_indicator = base->key_size_indicator;
-/* Don't simply accumulate bits in the JK_OPT_FWDURIMASK region, */
-/* because those are multi-bit values. */
+/* Don't simply accumulate bits in the JK_OPT_FWDURIMASK or
+ * JK_OPT_COLLAPSEMASK region, because those are multi-bit values. */
if (overrides->options & JK_OPT_FWDURIMASK)
- overrides->options |= (base->options & ~base->exclude_options) &
~JK_OPT_FWDURIMASK;
- else
- overrides->options |= (base->options & ~base->exclude_options);
+ mask |= JK_OPT_FWDURIMASK;
if (overrides->options & JK_OPT_COLLAPSEMASK)
- overrides->options |= (base->options & ~base->exclude_options) &
~JK_OPT_COLLAPSEMASK;
- else
- overrides->options |= (base->options & ~base->exclude_options);
+ mask |= JK_OPT_COLLAPSEMASK;
+ overrides->options |= (base->options & ~base->exclude_options) & ~mask;
if (base->envvars) {
if (overrides->envvars && overrides->envvars_has_own) {
@@ -3496,7 +3494,6 @@ static int jk_post_config(apr_pool_t * p
jk_server_conf_t *srvconf = (jk_server_conf_t
*)create_jk_config(pconf, srv);
sconf = (jk_server_conf_t *)merge_jk_config(pconf, sconf,
srvconf);
ap_set_module_config(srv->module_config, &jk_module,
sconf);
-
}
if (sconf && sconf->was_initialized == JK_FALSE) {
@@ -3519,8 +3516,22 @@ static int jk_post_config(apr_pool_t * p
uri_worker_map_switch(sconf->uw_map, sconf->log);
uri_worker_map_load(sconf->uw_map, sconf->log);
}
- if (conf->options & JK_OPT_COLLAPSEMASK)
- sconf->uw_map->collapse_slashes = conf->options &
JK_OPT_COLLAPSEMASK;
+ switch (sconf->options & JK_OPT_COLLAPSEMASK) {
+ case JK_OPT_COLLAPSEALL:
+ sconf->uw_map->collapse_slashes = JK_COLLAPSE_ALL;
+ break;
+ case JK_OPT_COLLAPSENONE:
+ sconf->uw_map->collapse_slashes = JK_COLLAPSE_NONE;
+ break;
+ case JK_OPT_COLLAPSEUNMOUNT:
+ sconf->uw_map->collapse_slashes =
JK_COLLAPSE_UNMOUNT;
+ break;
+ default:
+ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, s,
+ "Collapse slashes value %d ignored,
setting to %d",
+ sconf->options & JK_OPT_COLLAPSEMASK,
JK_COLLAPSE_DEFAULT);
+ sconf->uw_map->collapse_slashes =
JK_COLLAPSE_DEFAULT;
+ }
}
else {
if (sconf->mountcopy == JK_TRUE) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]