|
|
f0c688 |
--- a/modules/aaa/mod_auth_digest.c 2015/06/10 10:32:46 1684635
|
|
|
f0c688 |
+++ b/modules/aaa/mod_auth_digest.c 2015/06/10 10:43:54 1684636
|
|
|
f0c688 |
@@ -249,9 +249,18 @@
|
|
|
f0c688 |
client_shm_filename = ap_runtime_dir_relative(ctx, "authdigest_shm");
|
|
|
f0c688 |
client_shm_filename = ap_append_pid(ctx, client_shm_filename, ".");
|
|
|
f0c688 |
|
|
|
f0c688 |
- /* Now create that segment */
|
|
|
f0c688 |
- sts = apr_shm_create(&client_shm, shmem_size,
|
|
|
f0c688 |
- client_shm_filename, ctx);
|
|
|
f0c688 |
+ /* Use anonymous shm by default, fall back on name-based. */
|
|
|
f0c688 |
+ sts = apr_shm_create(&client_shm, shmem_size, NULL, ctx);
|
|
|
f0c688 |
+ if (APR_STATUS_IS_ENOTIMPL(sts)) {
|
|
|
f0c688 |
+ /* For a name-based segment, remove it first in case of a
|
|
|
f0c688 |
+ * previous unclean shutdown. */
|
|
|
f0c688 |
+ apr_shm_remove(client_shm_filename, ctx);
|
|
|
f0c688 |
+
|
|
|
f0c688 |
+ /* Now create that segment */
|
|
|
f0c688 |
+ sts = apr_shm_create(&client_shm, shmem_size,
|
|
|
f0c688 |
+ client_shm_filename, ctx);
|
|
|
f0c688 |
+ }
|
|
|
f0c688 |
+
|
|
|
f0c688 |
if (APR_SUCCESS != sts) {
|
|
|
f0c688 |
ap_log_error(APLOG_MARK, APLOG_ERR, sts, s, APLOGNO(01762)
|
|
|
f0c688 |
"Failed to create shared memory segment on file %s",
|