You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2017/10/12 14:34:39 UTC
svn commit: r1811967 - in /httpd/httpd/patches: 2.4.x/
2.4.x/backport-module-flags.diff trunk/
Author: icing
Date: Thu Oct 12 14:34:38 2017
New Revision: 1811967
URL: http://svn.apache.org/viewvc?rev=1811967&view=rev
Log:
patches dirs for trunk and 2.4.x, copied backport patch from 2.4.x
Added:
httpd/httpd/patches/2.4.x/
httpd/httpd/patches/2.4.x/backport-module-flags.diff
httpd/httpd/patches/trunk/
Added: httpd/httpd/patches/2.4.x/backport-module-flags.diff
URL: http://svn.apache.org/viewvc/httpd/httpd/patches/2.4.x/backport-module-flags.diff?rev=1811967&view=auto
==============================================================================
--- httpd/httpd/patches/2.4.x/backport-module-flags.diff (added)
+++ httpd/httpd/patches/2.4.x/backport-module-flags.diff Thu Oct 12 14:34:38 2017
@@ -0,0 +1,171 @@
+Index: include/ap_mmn.h
+===================================================================
+--- include/ap_mmn.h (revision 1811919)
++++ include/ap_mmn.h (working copy)
+@@ -496,6 +496,8 @@
+ * to ap_[r]getline()
+ * 20120211.68 (2.4.26-dev) Add ap_get_basic_auth_components() and deprecate
+ * ap_get_basic_auth_pw()
++ * 20120211.69 (2.4.29-dev) Add flags field to module_struct and function
++ * ap_get_module_flags()
+ */
+
+ #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
+@@ -503,7 +505,7 @@
+ #ifndef MODULE_MAGIC_NUMBER_MAJOR
+ #define MODULE_MAGIC_NUMBER_MAJOR 20120211
+ #endif
+-#define MODULE_MAGIC_NUMBER_MINOR 68 /* 0...n */
++#define MODULE_MAGIC_NUMBER_MINOR 69 /* 0...n */
+
+ /**
+ * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
+Index: include/http_config.h
+===================================================================
+--- include/http_config.h (revision 1811919)
++++ include/http_config.h (working copy)
+@@ -329,6 +329,12 @@
+ };
+
+ /**
++ * Flags associated with a module.
++ */
++#define AP_MODULE_FLAG_NONE (0)
++#define AP_MODULE_FLAG_ALWAYS_MERGE (1 << 0)
++
++/**
+ * Module structures. Just about everything is dispatched through
+ * these, directly or indirectly (through the command and handler
+ * tables).
+@@ -407,6 +413,9 @@
+ * @param p the pool to use for all allocations
+ */
+ void (*register_hooks) (apr_pool_t *p);
++
++ /** A bitmask of AP_MODULE_FLAG_* */
++ int flags;
+ };
+
+ /**
+@@ -519,6 +528,21 @@
+ AP_DECLARE(void) ap_set_module_config(ap_conf_vector_t *cv, const module *m,
+ void *val);
+
++/**
++ * When module flags have been introduced, and a way to check this.
++ */
++#define AP_MODULE_FLAGS_MMN_MAJOR 20161018
++#define AP_MODULE_FLAGS_MMN_MINOR 7
++#define AP_MODULE_HAS_FLAGS(m) \
++ AP_MODULE_MAGIC_AT_LEAST(AP_MODULE_FLAGS_MMN_MAJOR, \
++ AP_MODULE_FLAGS_MMN_MINOR)
++/**
++ * Generic accessor for the module's flags
++ * @param m The module to get the flags from.
++ * @return The module-specific flags
++ */
++AP_DECLARE(int) ap_get_module_flags(const module *m);
++
+ #if !defined(AP_DEBUG)
+
+ #define ap_get_module_config(v,m) \
+Index: modules/ssl/mod_ssl.c
+===================================================================
+--- modules/ssl/mod_ssl.c (revision 1811919)
++++ modules/ssl/mod_ssl.c (working copy)
+@@ -713,4 +713,7 @@
+ ssl_config_server_merge, /* merge per-server config structures */
+ ssl_config_cmds, /* table of configuration directives */
+ ssl_register_hooks /* register hooks */
++#if defined(AP_MODULE_HAS_FLAGS)
++ ,AP_MODULE_FLAG_ALWAYS_MERGE /* flags */
++#endif
+ };
+Index: server/config.c
+===================================================================
+--- server/config.c (revision 1811919)
++++ server/config.c (working copy)
+@@ -323,7 +323,7 @@
+ }
+
+ static void merge_server_configs(apr_pool_t *p, ap_conf_vector_t *base,
+- ap_conf_vector_t *virt)
++ server_rec *virt)
+ {
+ /* Can reuse the 'virt' vector for the spine of it, since we don't
+ * have to deal with the moral equivalent of .htaccess files here...
+@@ -330,7 +330,7 @@
+ */
+
+ void **base_vector = (void **)base;
+- void **virt_vector = (void **)virt;
++ void **virt_vector = (void **)virt->module_config;
+ module *modp;
+
+ for (modp = ap_top_module; modp; modp = modp->next) {
+@@ -337,10 +337,20 @@
+ merger_func df = modp->merge_server_config;
+ int i = modp->module_index;
+
+- if (!virt_vector[i])
+- virt_vector[i] = base_vector[i];
+- else if (df)
++ if (!virt_vector[i]) {
++ if (df && modp->create_server_config
++ && (ap_get_module_flags(modp) &
++ AP_MODULE_FLAG_ALWAYS_MERGE)) {
++ virt_vector[i] = (*modp->create_server_config)(p, virt);
++ }
++ else {
++ virt_vector[i] = base_vector[i];
++ df = NULL;
++ }
++ }
++ if (df) {
+ virt_vector[i] = (*df)(p, base_vector[i], virt_vector[i]);
++ }
+ }
+ }
+
+@@ -2322,8 +2332,7 @@
+ dconf->log = &main_server->log;
+
+ for (virt = main_server->next; virt; virt = virt->next) {
+- merge_server_configs(p, main_server->module_config,
+- virt->module_config);
++ merge_server_configs(p, main_server->module_config, virt);
+
+ virt->lookup_defaults =
+ ap_merge_per_dir_configs(p, main_server->lookup_defaults,
+Index: server/util_debug.c
+===================================================================
+--- server/util_debug.c (revision 1811919)
++++ server/util_debug.c (working copy)
+@@ -107,6 +107,17 @@
+ return ((void **)cv)[m->module_index];
+ }
+
++AP_DECLARE(int) ap_get_module_flags(const module *m)
++{
++ if (m->version < AP_MODULE_FLAGS_MMN_MAJOR
++ || (m->version == AP_MODULE_FLAGS_MMN_MAJOR
++ && (m->minor_version < AP_MODULE_FLAGS_MMN_MINOR))) {
++ return 0;
++ }
++
++ return m->flags;
++}
++
+ #if defined(ap_get_core_module_config)
+ #undef ap_get_core_module_config
+ AP_DECLARE(void *) ap_get_core_module_config(const ap_conf_vector_t *cv);
+Index: .
+===================================================================
+--- . (revision 1811919)
++++ . (working copy)
+
+Property changes on: .
+___________________________________________________________________
+Modified: svn:mergeinfo
+## -0,0 +0,1 ##
+ Merged /httpd/httpd/trunk:r1809302-1809303,1809305,1809311,1809314,1809713