]> granicus.if.org Git - apache/commitdiff
Merge r1298433, r1305166 from trunk:
authorJim Jagielski <jim@apache.org>
Tue, 3 Apr 2012 13:36:55 +0000 (13:36 +0000)
committerJim Jagielski <jim@apache.org>
Tue, 3 Apr 2012 13:36:55 +0000 (13:36 +0000)
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
STATUS
docs/manual/mod/mod_slotmem_shm.xml
modules/slotmem/mod_slotmem_shm.c

diff --git a/CHANGES b/CHANGES
index 0530876b66b3d1e30c819bde3d255d7120ba3441..acc08b70ae47f25376771443f0853c23f630b29f 100644 (file)
--- 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 ef3505c79ce4e4800ee49355aa3b6685cb84171f..ceacb4bfd92c7773a78166ade81cefbc8db54d55 100644 (file)
--- 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 ]
index 7a6ed8099eff93445c6332cf18560b86ab00f8e9..c49357dfc5493e513615b56a2ec3454608fab559 100644 (file)
@@ -38,7 +38,9 @@
     restart, whether graceful or not. The data itself is
     stored and restored within a file noted by the <code>name</code>
     parameter in the <code>create</code> and <code>attach</code>
-    calls.
+    calls. If not specified with an absolute path, the file will be
+    created relative to the path specified by the
+    <directive module="core">DefaultRuntimeDir</directive> directive.
     </p>
 
     <p><code>mod_slotmem_shm</code> provides the following API functions:
@@ -55,9 +57,9 @@
          <dt><code>"none"</code></dt>
          <dd><code>Does not persist shared memory in file.</code></dd>
          <dt><code>"file-name"</code></dt>
-         <dd><code>$server_root/file-name</code></dd>
+         <dd><code>[DefaultRuntimeDir]/file-name</code></dd>
          <dt><code>"/absolute-file-name"</code></dt>
-         <dd><code>$absolute-file-name</code></dd>
+         <dd><code>Absolute file name</code></dd>
        </dl></dd>
 
       <dt>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)</dt>
index b3a5ddcbe0d956e7c2344cb0d4688104d8eb0fab..a9b7ca258cc0766b18837728f7585388d7035f28 100644 (file)
@@ -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;
 }