On Wed, Apr 11, 2018 at 5:49 PM, Yann Ylavic <[email protected]> wrote:
> Maybe we need a global EXEC_ON_READ setting (before any vhost) to
> control/ignore AP_MODULE_FLAG_ALWAYS_MERGE?
Something like the attached possibly...
Index: include/http_config.h
===================================================================
--- include/http_config.h (revision 1828882)
+++ include/http_config.h (working copy)
@@ -545,6 +545,12 @@ AP_DECLARE(void) ap_set_module_config(ap_conf_vect
*/
AP_DECLARE(int) ap_get_module_flags(const module *m);
+/**
+ * Module flags to be ignored
+ * @var module ap_module_flags_umask
+ */
+AP_DECLARE_DATA extern int ap_module_flags_umask;
+
#if !defined(AP_DEBUG)
#define ap_get_module_config(v,m) \
Index: server/core.c
===================================================================
--- server/core.c (revision 1828882)
+++ server/core.c (working copy)
@@ -4018,6 +4018,21 @@ static const char *set_http_method(cmd_parms *cmd,
return NULL;
}
+static const char *set_module_flags_umask(cmd_parms *cmd, void *dummy,
+ const char *arg)
+{
+ long umask;
+ char *end;
+
+ umask = strtol(arg, &end, 0);
+ if (*end || (umask & ~APR_INT32_MIN)) {
+ return "Invalid ModuleFlagsUmask";
+ }
+
+ ap_module_flags_umask = (int)umask;
+ return NULL;
+}
+
static apr_hash_t *errorlog_hash;
static int log_constant_item(const ap_errorlog_info *info, const char *arg,
@@ -4551,6 +4566,8 @@ AP_INIT_ITERATE("HttpProtocolOptions", set_http_pr
"'Unsafe' or 'Strict' (default). Sets HTTP acceptance rules"),
AP_INIT_ITERATE("RegisterHttpMethod", set_http_method, NULL, RSRC_CONF,
"Registers non-standard HTTP methods"),
+AP_INIT_TAKE1("ModuleFlagsUmask", set_module_flags_umask, NULL, RSRC_CONF | EXEC_ON_READ,
+ "Umask applied to module flags"),
{ NULL }
};
Index: server/util_debug.c
===================================================================
--- server/util_debug.c (revision 1828882)
+++ server/util_debug.c (working copy)
@@ -34,6 +34,7 @@
#undef strstr
#endif
+AP_DECLARE_DATA int ap_module_flags_umask;
#if defined(ap_strchr)
#undef ap_strchr
@@ -115,7 +116,7 @@ AP_DECLARE(int) ap_get_module_flags(const module *
return 0;
}
- return m->flags;
+ return m->flags & ~ap_module_flags_umask;
}
#if defined(ap_get_core_module_config)