Changeset 0363315 in mod_gnutls


Ignore:
Timestamp:
Apr 24, 2018, 2:21:35 AM (2 years ago)
Author:
Fiona Klute <fiona.klute@…>
Branches:
debian/master, master, proxy-ticket
Children:
6bbd378
Parents:
6c5c2ec
Message:

Use cache mutex only if socache provider is not multiprocess/thread safe

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/gnutls_cache.c

    r6c5c2ec r0363315  
    142142    apr_pool_create(&spool, NULL);
    143143
    144     apr_global_mutex_lock(sc->cache->mutex);
     144    if (sc->cache->prov->flags & AP_SOCACHE_FLAG_NOTMPSAFE)
     145        apr_global_mutex_lock(sc->cache->mutex);
    145146    apr_status_t rv = sc->cache->prov->store(sc->cache->socache, server,
    146147                                             key.data, key.size,
     
    148149                                             data.data, data.size,
    149150                                             spool);
    150     apr_global_mutex_unlock(sc->cache->mutex);
     151    if (sc->cache->prov->flags & AP_SOCACHE_FLAG_NOTMPSAFE)
     152        apr_global_mutex_unlock(sc->cache->mutex);
    151153
    152154    if (rv != APR_SUCCESS)
     
    202204    apr_pool_create(&spool, pool);
    203205
    204     apr_global_mutex_lock(sc->cache->mutex);
     206    if (sc->cache->prov->flags & AP_SOCACHE_FLAG_NOTMPSAFE)
     207        apr_global_mutex_lock(sc->cache->mutex);
    205208    apr_status_t rv = sc->cache->prov->retrieve(sc->cache->socache, server,
    206209                                                key.data, key.size,
    207210                                                data.data, &data.size,
    208211                                                spool);
    209     apr_global_mutex_unlock(sc->cache->mutex);
     212    if (sc->cache->prov->flags & AP_SOCACHE_FLAG_NOTMPSAFE)
     213        apr_global_mutex_unlock(sc->cache->mutex);
    210214
    211215    if (rv != APR_SUCCESS)
     
    258262        return -1;
    259263
    260     apr_global_mutex_lock(ctxt->sc->cache->mutex);
     264    if (ctxt->sc->cache->prov->flags & AP_SOCACHE_FLAG_NOTMPSAFE)
     265        apr_global_mutex_lock(ctxt->sc->cache->mutex);
    261266    apr_status_t rv = ctxt->sc->cache->prov->remove(ctxt->sc->cache->socache,
    262267                                                    ctxt->c->base_server,
    263268                                                    key.data, key.size,
    264269                                                    ctxt->c->pool);
    265     apr_global_mutex_unlock(ctxt->sc->cache->mutex);
     270    if (ctxt->sc->cache->prov->flags & AP_SOCACHE_FLAG_NOTMPSAFE)
     271        apr_global_mutex_unlock(ctxt->sc->cache->mutex);
    266272
    267273    if (rv != APR_SUCCESS) {
Note: See TracChangeset for help on using the changeset viewer.