diff --git a/httpd-2.4.33-mddefault.patch b/httpd-2.4.33-mddefault.patch deleted file mode 100644 index 9e82fb8..0000000 --- a/httpd-2.4.33-mddefault.patch +++ /dev/null @@ -1,21 +0,0 @@ - -Override default. - ---- httpd-2.4.33/modules/md/mod_md_config.c.mddefault -+++ httpd-2.4.33/modules/md/mod_md_config.c -@@ -54,10 +54,14 @@ - - #define DEF_VAL (-1) - -+#ifndef MD_DEFAULT_STORE_DIR -+#define MD_DEFAULT_STORE_DIR "state/md" -+#endif -+ - /* Default settings for the global conf */ - static md_mod_conf_t defmc = { - NULL, -- "md", -+ MD_DEFAULT_STORE_DIR, - NULL, - NULL, - 80, diff --git a/httpd-2.4.37-r1842929+.patch b/httpd-2.4.37-r1842929+.patch new file mode 100644 index 0000000..c6aa1f7 --- /dev/null +++ b/httpd-2.4.37-r1842929+.patch @@ -0,0 +1,317 @@ +# ./pullrev.sh 1842929 1842931 +http://svn.apache.org/viewvc?view=revision&revision=1842929 +http://svn.apache.org/viewvc?view=revision&revision=1842931 + +--- httpd-2.4.37/acinclude.m4.r1842929+ ++++ httpd-2.4.37/acinclude.m4 +@@ -45,6 +45,7 @@ + APACHE_SUBST(installbuilddir) + APACHE_SUBST(runtimedir) + APACHE_SUBST(proxycachedir) ++ APACHE_SUBST(statedir) + APACHE_SUBST(other_targets) + APACHE_SUBST(progname) + APACHE_SUBST(prefix) +@@ -663,6 +664,7 @@ + APACHE_SUBST_EXPANDED_ARG(runtimedir) + APACHE_SUBST_EXPANDED_ARG(logfiledir) + APACHE_SUBST_EXPANDED_ARG(proxycachedir) ++ APACHE_SUBST_EXPANDED_ARG(statedir) + ]) + + dnl +--- httpd-2.4.37/config.layout.r1842929+ ++++ httpd-2.4.37/config.layout +@@ -29,6 +29,7 @@ + includedir: ${prefix}/include + localstatedir: ${prefix} + runtimedir: ${localstatedir}/logs ++ statedir: ${localstatedir}/state + logfiledir: ${localstatedir}/logs + proxycachedir: ${localstatedir}/proxy + +@@ -54,6 +55,7 @@ + includedir: ${prefix}/include+ + localstatedir: ${prefix}/var+ + runtimedir: ${localstatedir}/run ++ statedir: ${localstatedir}/state + logfiledir: ${localstatedir}/log + proxycachedir: ${localstatedir}/proxy + +@@ -78,6 +80,7 @@ + includedir: /System/Library/Frameworks/Apache.framework/Versions/2.0/Headers + localstatedir: /var + runtimedir: ${prefix}/Logs ++ statedir: ${prefix}/State + logfiledir: ${prefix}/Logs + proxycachedir: ${prefix}/ProxyCache + +@@ -102,6 +105,7 @@ + includedir: ${prefix}/include+ + localstatedir: /var + runtimedir: ${localstatedir}/run ++ statedir: ${localstatedir}/state + logfiledir: ${localstatedir}/log+ + proxycachedir: ${runtimedir}/proxy + +@@ -126,6 +130,7 @@ + includedir: ${prefix}/include/apache + localstatedir: /var + runtimedir: ${localstatedir}/run ++ statedir: ${localstatedir}/lib/httpd + logfiledir: ${localstatedir}/log/httpd + proxycachedir: ${localstatedir}/cache/httpd + +@@ -151,6 +156,7 @@ + includedir: ${prefix}/include/httpd + runtimedir: /run/httpd + logfiledir: ${localstatedir}/log/httpd ++ statedir: ${localstatedir}/lib/httpd + proxycachedir: ${localstatedir}/cache/httpd/proxy + + +@@ -175,6 +181,7 @@ + localstatedir: /var${prefix} + runtimedir: ${localstatedir}/run + logfiledir: ${localstatedir}/logs ++ statedir: ${localstatedir}/state + proxycachedir: ${localstatedir}/proxy + + +@@ -197,6 +204,7 @@ + cgidir: ${datadir}/cgi-bin + includedir: ${prefix}/include/apache + localstatedir: /var/lib/httpd ++ statedir: ${localstatedir} + runtimedir: /var/run + logfiledir: /var/log/httpd + proxycachedir: /var/cache/httpd +@@ -223,6 +231,7 @@ + localstatedir: /var + runtimedir: ${localstatedir}/run + logfiledir: ${localstatedir}/log/httpd ++ statedir: ${prefix}/state + proxycachedir: ${localstatedir}/proxy + + +@@ -246,6 +255,7 @@ + includedir: ${exec_prefix}/include + localstatedir: ${prefix} + runtimedir: /var/run ++ statedir: ${datadir}/state + logfiledir: ${datadir}/logs + proxycachedir: ${datadir}/proxy + +@@ -271,6 +281,7 @@ + localstatedir: ${prefix} + runtimedir: ${prefix}/logs + logfiledir: ${prefix}/logs ++ statedir: ${prefix}/state + proxycachedir: ${prefix}/proxy + + +@@ -315,6 +326,7 @@ + cgidir: ${prefix}/usr/lib/cgi-bin + includedir: ${exec_prefix}/include/apache2 + localstatedir: ${prefix}/var/lock/apache2 ++ statedir: ${prefix}/var/lib/apache2 + runtimedir: ${prefix}/var/run/apache2 + logfiledir: ${prefix}/var/log/apache2 + proxycachedir: ${prefix}/var/cache/apache2/proxy +@@ -343,6 +355,7 @@ + manualdir: ${datadir}/manual + cgidir: ${datadir}/cgi-bin + runtimedir: ${localstatedir}/run ++ runtimedir: ${localstatedir}/lib/httpd + logfiledir: ${localstatedir}/log/httpd + proxycachedir: ${localstatedir}/cache/httpd/cache-root + +@@ -366,6 +379,7 @@ + manualdir: ${prefix}/manual + includedir: ${prefix}/include + localstatedir: /var/httpd ++ statedir: ${localstatedir}/state + runtimedir: ${localstatedir}/run + logfiledir: ${localstatedir}/logs + proxycachedir: ${localstatedir}/proxy +@@ -391,6 +405,7 @@ + includedir: ${prefix}/include/httpd + localstatedir: /var + runtimedir: ${localstatedir}/run/httpd ++ statedir: ${localstatedir}/lib/httpd + logfiledir: ${localstatedir}/log/httpd + proxycachedir: ${localstatedir}/cache/httpd + +--- httpd-2.4.37/configure.in.r1842929+ ++++ httpd-2.4.37/configure.in +@@ -41,7 +41,7 @@ + AC_PREFIX_DEFAULT(/usr/local/apache2) + + dnl Get the layout here, so we can pass the required variables to apr +-APR_ENABLE_LAYOUT(Apache, [errordir iconsdir htdocsdir cgidir]) ++APR_ENABLE_LAYOUT(Apache, [errordir iconsdir htdocsdir cgidir statedir]) + + dnl reparse the configure arguments. + APR_PARSE_ARGUMENTS +--- httpd-2.4.37/include/ap_config_layout.h.in.r1842929+ ++++ httpd-2.4.37/include/ap_config_layout.h.in +@@ -60,5 +60,7 @@ + #define DEFAULT_REL_LOGFILEDIR "@rel_logfiledir@" + #define DEFAULT_EXP_PROXYCACHEDIR "@exp_proxycachedir@" + #define DEFAULT_REL_PROXYCACHEDIR "@rel_proxycachedir@" ++#define DEFAULT_EXP_STATEDIR "@exp_statedir@" ++#define DEFAULT_REL_STATEDIR "@rel_statedir@" + + #endif /* AP_CONFIG_LAYOUT_H */ +--- httpd-2.4.37/include/http_config.h.r1842929+ ++++ httpd-2.4.37/include/http_config.h +@@ -757,6 +757,14 @@ + */ + AP_DECLARE(char *) ap_runtime_dir_relative(apr_pool_t *p, const char *fname); + ++/** ++ * Compute the name of a persistent state file (e.g. a database or ++ * long-lived cache) relative to the appropriate state directory. ++ * Absolute paths are returned as-is. The state directory is ++ * configured via the DefaultStateDir directive or at build time. ++ */ ++AP_DECLARE(char *) ap_state_dir_relative(apr_pool_t *p, const char *fname); ++ + /* Finally, the hook for dynamically loading modules in... */ + + /** +--- httpd-2.4.37/Makefile.in.r1842929+ ++++ httpd-2.4.37/Makefile.in +@@ -213,6 +213,7 @@ + install-other: + @test -d $(DESTDIR)$(logfiledir) || $(MKINSTALLDIRS) $(DESTDIR)$(logfiledir) + @test -d $(DESTDIR)$(runtimedir) || $(MKINSTALLDIRS) $(DESTDIR)$(runtimedir) ++ @test -d $(DESTDIR)$(statedir) || $(MKINSTALLDIRS) $(DESTDIR)$(statedir) + @for ext in dll x; do \ + file=apachecore.$$ext; \ + if test -f $$file; then \ +--- httpd-2.4.37/modules/dav/fs/mod_dav_fs.c.r1842929+ ++++ httpd-2.4.37/modules/dav/fs/mod_dav_fs.c +@@ -29,6 +29,10 @@ + + extern module AP_MODULE_DECLARE_DATA dav_fs_module; + ++#ifndef DEFAULT_DAV_LOCKDB ++#define DEFAULT_DAV_LOCKDB "davlockdb" ++#endif ++ + const char *dav_get_lockdb_path(const request_rec *r) + { + dav_fs_server_conf *conf; +@@ -39,7 +43,11 @@ + + static void *dav_fs_create_server_config(apr_pool_t *p, server_rec *s) + { +- return apr_pcalloc(p, sizeof(dav_fs_server_conf)); ++ dav_fs_server_conf *conf = apr_pcalloc(p, sizeof(dav_fs_server_conf)); ++ ++ conf->lockdb_path = ap_state_dir_relative(p, DEFAULT_DAV_LOCKDB); ++ ++ return conf; + } + + static void *dav_fs_merge_server_config(apr_pool_t *p, +--- httpd-2.4.37/modules/md/mod_md_config.c.r1842929+ ++++ httpd-2.4.37/modules/md/mod_md_config.c +@@ -54,10 +54,14 @@ + + #define DEF_VAL (-1) + ++#ifndef MD_DEFAULT_BASE_DIR ++#define MD_DEFAULT_BASE_DIR "state/md" ++#endif ++ + /* Default settings for the global conf */ + static md_mod_conf_t defmc = { + NULL, +- "md", ++ NULL, + NULL, + NULL, + 80, +@@ -112,6 +116,7 @@ + memcpy(mod_md_config, &defmc, sizeof(*mod_md_config)); + mod_md_config->mds = apr_array_make(pool, 5, sizeof(const md_t *)); + mod_md_config->unused_names = apr_array_make(pool, 5, sizeof(const md_t *)); ++ mod_md_config->base_dir = ap_state_dir_relative(pool, MD_DEFAULT_BASE_DIR); + + apr_pool_cleanup_register(pool, NULL, cleanup_mod_config, apr_pool_cleanup_null); + } +--- httpd-2.4.37/server/core.c.r1842929+ ++++ httpd-2.4.37/server/core.c +@@ -129,6 +129,8 @@ + AP_DECLARE_DATA int ap_run_mode = AP_SQ_RM_UNKNOWN; + AP_DECLARE_DATA int ap_config_generation = 0; + ++static const char *core_state_dir; ++ + static void *create_core_dir_config(apr_pool_t *a, char *dir) + { + core_dir_config *conf; +@@ -3104,6 +3106,24 @@ + return NULL; + } + ++static const char *set_state_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**)&core_state_dir, NULL, ++ ap_server_root_relative(cmd->temp_pool, arg), ++ APR_FILEPATH_TRUENAME, cmd->pool) != APR_SUCCESS) ++ || !ap_is_directory(cmd->temp_pool, core_state_dir)) { ++ return "DefaultStateDir 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_CONTEXT); +@@ -4398,6 +4418,8 @@ + "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("DefaultStateDir", set_state_dir, NULL, RSRC_CONF | EXEC_ON_READ, ++ "Common directory for persistent state (databases, long-lived caches, etc.)"), + AP_INIT_TAKE1("ErrorLog", set_server_string_slot, + (void *)APR_OFFSETOF(server_rec, error_fname), RSRC_CONF, + "The filename of the error log"), +@@ -5150,6 +5172,27 @@ + } + } + ++AP_DECLARE(char *) ap_state_dir_relative(apr_pool_t *p, const char *file) ++{ ++ char *newpath = NULL; ++ apr_status_t rv; ++ const char *state_dir; ++ ++ state_dir = core_state_dir ++ ? core_state_dir ++ : ap_server_root_relative(p, DEFAULT_REL_STATEDIR); ++ ++ rv = apr_filepath_merge(&newpath, state_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; ++ } ++} ++ + static apr_random_t *rng = NULL; + #if APR_HAS_THREADS + static apr_thread_mutex_t *rng_mutex = NULL; diff --git a/httpd.spec b/httpd.spec index 156716f..e40e04d 100644 --- a/httpd.spec +++ b/httpd.spec @@ -13,7 +13,7 @@ Summary: Apache HTTP Server Name: httpd Version: 2.4.37 -Release: 1%{?dist} +Release: 2%{?dist} URL: https://httpd.apache.org/ Source0: https://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2 Source1: index.html @@ -63,7 +63,7 @@ Patch6: httpd-2.4.34-apctlsystemd.patch # Needed for socket activation and mod_systemd patch Patch19: httpd-2.4.25-detect-systemd.patch # Features/functional changes -Patch21: httpd-2.4.33-mddefault.patch +Patch21: httpd-2.4.37-r1842929+.patch Patch23: httpd-2.4.33-export.patch Patch24: httpd-2.4.1-corelimit.patch Patch25: httpd-2.4.25-selinux.patch @@ -224,7 +224,7 @@ interface for storing and accessing per-user session data. %patch19 -p1 -b .detectsystemd -%patch21 -p1 -b .mddefault +%patch21 -p1 -b .r1842929+ %patch23 -p1 -b .export %patch24 -p1 -b .corelimit %patch25 -p1 -b .selinux @@ -729,6 +729,11 @@ exit $rv %{_rpmconfigdir}/macros.d/macros.httpd %changelog +* Wed Oct 31 2018 Joe Orton - 2.4.37-2 +- add DefaultStateDir/ap_state_dir_relative() +- mod_dav_fs: use state dir for default DAVLockDB +- mod_md: use state dir for default MDStoreDir + * Wed Oct 31 2018 Joe Orton - 2.4.37-1 - update to 2.4.37