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