From 227dfc73f7df8a541b578df6663cf18608cec17c Mon Sep 17 00:00:00 2001
From: Jim Jagielski
Date: Tue, 3 Apr 2012 13:36:55 +0000
Subject: [PATCH] Merge r1298433, r1305166 from trunk:
Use new ap_runtime_dir_relative() API
Document use of the DefaultRuntimeDir directive.
Submitted by: jim, minfrin
Reviewed/backported by: jim
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1308897 13f79535-47bb-0310-9956-ffa450edef68
---
CHANGES | 2 ++
STATUS | 6 ------
docs/manual/mod/mod_slotmem_shm.xml | 8 +++++---
modules/slotmem/mod_slotmem_shm.c | 30 ++++++++++++++++++++---------
4 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/CHANGES b/CHANGES
index 0530876b66..acc08b70ae 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,8 @@ Changes with Apache 2.4.2
envvars: Fix insecure handling of LD_LIBRARY_PATH that could lead to the
current working directory to be searched for DSOs. [Stefan Fritsch]
+ *) mod_slotmem_shm: Honor DefaultRuntimeDir [Jim Jagielski]
+
*) mod_ssl: Fix crash with threaded MPMs due to race condition when
initializing EC temporary keys. [Stefan Fritsch]
diff --git a/STATUS b/STATUS
index ef3505c79c..ceacb4bfd9 100644
--- a/STATUS
+++ b/STATUS
@@ -88,12 +88,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * mod_slotmem_shm: Use ap_runtime_dir_relative(). (Assumes r1297560)
- Trunk patch: http://svn.apache.org/viewvc?rev=1298433&view=rev
- 2.4.x patch: Trunk patch works (skip docs/log-message-tags/next-number)
- +1: jim, minfrin (with docs at http://svn.apache.org/viewvc?rev=1305166&view=rev)
- +1: igalic
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
diff --git a/docs/manual/mod/mod_slotmem_shm.xml b/docs/manual/mod/mod_slotmem_shm.xml
index 7a6ed8099e..c49357dfc5 100644
--- a/docs/manual/mod/mod_slotmem_shm.xml
+++ b/docs/manual/mod/mod_slotmem_shm.xml
@@ -38,7 +38,9 @@
restart, whether graceful or not. The data itself is
stored and restored within a file noted by the name
parameter in the create
and attach
- calls.
+ calls. If not specified with an absolute path, the file will be
+ created relative to the path specified by the
+ DefaultRuntimeDir directive.
mod_slotmem_shm
provides the following API functions:
@@ -55,9 +57,9 @@
"none"
Does not persist shared memory in file.
"file-name"
- $server_root/file-name
+ [DefaultRuntimeDir]/file-name
"/absolute-file-name"
- $absolute-file-name
+ Absolute file name
apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
diff --git a/modules/slotmem/mod_slotmem_shm.c b/modules/slotmem/mod_slotmem_shm.c
index b3a5ddcbe0..a9b7ca258c 100644
--- a/modules/slotmem/mod_slotmem_shm.c
+++ b/modules/slotmem/mod_slotmem_shm.c
@@ -69,7 +69,6 @@ struct ap_slotmem_instance_t {
struct ap_slotmem_instance_t *next; /* location of next allocated segment */
};
-
/*
* Memory layout:
* sharedslotdesc_t | num_free | slots | isuse array |
@@ -82,6 +81,9 @@ struct ap_slotmem_instance_t {
static struct ap_slotmem_instance_t *globallistmem = NULL;
static apr_pool_t *gpool = NULL;
+#define DEFAULT_SLOTMEM_PREFIX "slotmem-shm-"
+#define DEFAULT_SLOTMEM_SUFFIX ".shm"
+
/* apr:shmem/unix/shm.c */
static apr_status_t unixd_set_shm_perms(const char *fname)
{
@@ -125,10 +127,6 @@ static apr_status_t unixd_set_shm_perms(const char *fname)
*
*/
-#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;
@@ -136,9 +134,9 @@ static const char *slotmem_filename(apr_pool_t *pool, const char *slotmemname)
return NULL;
}
else if (slotmemname[0] != '/') {
- const char *path = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX, slotmemname,
- DEFAULT_SLOTMEM_SUFFIX, NULL);
- fname = ap_server_root_relative(pool, path);
+ const char *filenm = apr_pstrcat(pool, DEFAULT_SLOTMEM_PREFIX,
+ slotmemname, DEFAULT_SLOTMEM_SUFFIX, NULL);
+ fname = ap_runtime_dir_relative(pool, filenm);
}
else {
fname = slotmemname;
@@ -297,6 +295,9 @@ static apr_status_t slotmem_create(ap_slotmem_instance_t **new,
}
/* first try to attach to existing shared memory */
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, APLOGNO(02300)
+ "create %s: %"APR_SIZE_T_FMT"/%u", fname, item_size,
+ item_num);
if (fbased) {
rv = apr_shm_attach(&shm, fname, gpool);
}
@@ -401,6 +402,9 @@ static apr_status_t slotmem_attach(ap_slotmem_instance_t **new,
return APR_ENOSHMAVAIL;
}
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, APLOGNO(02301)
+ "attach looking for %s", fname);
+
/* first try to attach to existing slotmem */
if (next) {
for (;;) {
@@ -409,6 +413,10 @@ static apr_status_t slotmem_attach(ap_slotmem_instance_t **new,
*new = next;
*item_size = next->desc.size;
*item_num = next->desc.num;
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf,
+ APLOGNO(02302)
+ "attach found %s: %"APR_SIZE_T_FMT"/%u", fname,
+ *item_size, *item_num);
return APR_SUCCESS;
}
if (!next->next) {
@@ -418,7 +426,7 @@ static apr_status_t slotmem_attach(ap_slotmem_instance_t **new,
}
}
- /* first try to attach to existing shared memory */
+ /* next try to attach to existing shared memory */
rv = apr_shm_attach(&shm, fname, gpool);
if (rv != APR_SUCCESS) {
return rv;
@@ -453,6 +461,10 @@ static apr_status_t slotmem_attach(ap_slotmem_instance_t **new,
*new = res;
*item_size = desc.size;
*item_num = desc.num;
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf,
+ APLOGNO(02303)
+ "attach found %s: %"APR_SIZE_T_FMT"/%u", fname,
+ *item_size, *item_num);
return APR_SUCCESS;
}
--
2.40.0