From: Joe Orton Date: Thu, 28 Jul 2005 11:53:25 +0000 (+0000) Subject: * modules/ldap/util_ldap_cache.c (util_ldap_cache_init): Use the X-Git-Tag: 2.1.7~5^2~60 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=99bc6a8a7740c0cee54bbd2f48761ec18a52c498;p=apache * modules/ldap/util_ldap_cache.c (util_ldap_cache_init): Use the actual available size of the shm segment not the requested size. Ensure the requested size is aligned. Check errors from apr_rmm_init. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@225753 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/ldap/util_ldap_cache.c b/modules/ldap/util_ldap_cache.c index e8feca84e6..9a28a728ed 100644 --- a/modules/ldap/util_ldap_cache.c +++ b/modules/ldap/util_ldap_cache.c @@ -407,8 +407,11 @@ apr_status_t util_ldap_cache_init(apr_pool_t *pool, util_ldap_state_t *st) { #if APR_HAS_SHARED_MEMORY apr_status_t result; + apr_size_t size; - result = apr_shm_create(&st->cache_shm, st->cache_bytes, st->cache_file, st->pool); + size = APR_ALIGN_DEFAULT(st->cache_bytes); + + result = apr_shm_create(&st->cache_shm, size, st->cache_file, st->pool); if (result == APR_EEXIST) { /* * The cache could have already been created (i.e. we may be a child process). See @@ -420,8 +423,17 @@ apr_status_t util_ldap_cache_init(apr_pool_t *pool, util_ldap_state_t *st) return result; } + /* Determine the usable size of the shm segment. */ + size = apr_shm_size_get(st->cache_shm); + /* This will create a rmm "handler" to get into the shared memory area */ - apr_rmm_init(&st->cache_rmm, NULL, (void *)apr_shm_baseaddr_get(st->cache_shm), st->cache_bytes, st->pool); + result = apr_rmm_init(&st->cache_rmm, NULL, + apr_shm_baseaddr_get(st->cache_shm), size, + st->pool); + if (result != APR_SUCCESS) { + return result; + } + #endif apr_pool_cleanup_register(st->pool, st , util_ldap_cache_module_kill, apr_pool_cleanup_null);