Changeset aa68232 in mod_gnutls for src/gnutls_cache.c


Ignore:
Timestamp:
Jun 10, 2016, 4:16:48 AM (4 years ago)
Author:
Thomas Klute <thomas2.klute@…>
Branches:
debian/master, debian/stretch-backports, master, upstream
Children:
d6834e0
Parents:
e809fb3
Message:

Move global cache mutex into the private cache struct

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/gnutls_cache.c

    re809fb3 raa68232  
    389389    deleted = 0;
    390390
    391     apr_global_mutex_lock(sc->cache_mutex);
     391    apr_global_mutex_lock(sc->cache->mutex);
    392392
    393393    rv = apr_dbm_open_ex(&dbm, db_type(sc),
     
    398398                "[gnutls_cache] error opening cache '%s'",
    399399                sc->cache_config);
    400         apr_global_mutex_unlock(sc->cache_mutex);
     400        apr_global_mutex_unlock(sc->cache->mutex);
    401401        apr_pool_destroy(spool);
    402402        return;
     
    424424    apr_dbm_close(dbm);
    425425
    426     rv = apr_global_mutex_unlock(sc->cache_mutex);
     426    rv = apr_global_mutex_unlock(sc->cache->mutex);
    427427
    428428    ap_log_error(APLOG_MARK, APLOG_DEBUG, rv, s,
     
    447447    dbm_cache_expire(ctxt->c->base_server);
    448448
    449     apr_global_mutex_lock(ctxt->sc->cache_mutex);
     449    apr_global_mutex_lock(ctxt->sc->cache->mutex);
    450450
    451451    rv = apr_dbm_open_ex(&dbm, db_type(ctxt->sc),
     
    456456                      "error opening cache '%s'",
    457457                      ctxt->sc->cache_config);
    458         apr_global_mutex_unlock(ctxt->sc->cache_mutex);
     458        apr_global_mutex_unlock(ctxt->sc->cache->mutex);
    459459        return data;
    460460    }
     
    486486 close_db:
    487487    apr_dbm_close(dbm);
    488     apr_global_mutex_unlock(ctxt->sc->cache_mutex);
     488    apr_global_mutex_unlock(ctxt->sc->cache->mutex);
    489489
    490490    /* cache entry might have expired since last cache cleanup */
     
    539539            data.data, data.size);
    540540
    541     apr_global_mutex_lock(sc->cache_mutex);
     541    apr_global_mutex_lock(sc->cache->mutex);
    542542
    543543    rv = apr_dbm_open_ex(&dbm, db_type(sc),
     
    549549                     "error opening cache '%s'",
    550550                     sc->cache_config);
    551         apr_global_mutex_unlock(sc->cache_mutex);
     551        apr_global_mutex_unlock(sc->cache->mutex);
    552552        apr_pool_destroy(spool);
    553553        return -1;
     
    561561                     sc->cache_config);
    562562        apr_dbm_close(dbm);
    563         apr_global_mutex_unlock(sc->cache_mutex);
     563        apr_global_mutex_unlock(sc->cache->mutex);
    564564        apr_pool_destroy(spool);
    565565        return -1;
     
    567567
    568568    apr_dbm_close(dbm);
    569     apr_global_mutex_unlock(sc->cache_mutex);
     569    apr_global_mutex_unlock(sc->cache->mutex);
    570570
    571571    ap_log_error(APLOG_MARK, APLOG_DEBUG, rv, s,
     
    603603    apr_datum_t dbmkey = {(char*) tmpkey.data, tmpkey.size};
    604604
    605     apr_global_mutex_lock(ctxt->sc->cache_mutex);
     605    apr_global_mutex_lock(ctxt->sc->cache->mutex);
    606606
    607607    rv = apr_dbm_open_ex(&dbm, db_type(ctxt->sc),
     
    613613                "[gnutls_cache] error opening cache '%s'",
    614614                ctxt->sc->cache_config);
    615         apr_global_mutex_unlock(ctxt->sc->cache_mutex);
     615        apr_global_mutex_unlock(ctxt->sc->cache->mutex);
    616616        return -1;
    617617    }
     
    625625                ctxt->sc->cache_config);
    626626        apr_dbm_close(dbm);
    627         apr_global_mutex_unlock(ctxt->sc->cache_mutex);
     627        apr_global_mutex_unlock(ctxt->sc->cache->mutex);
    628628        return -1;
    629629    }
    630630
    631631    apr_dbm_close(dbm);
    632     apr_global_mutex_unlock(ctxt->sc->cache_mutex);
     632    apr_global_mutex_unlock(ctxt->sc->cache->mutex);
    633633
    634634    return 0;
     
    688688
    689689    /* initialize mutex only once */
    690     if (sc->cache_mutex == NULL)
    691     {
    692         apr_status_t rv = ap_global_mutex_create(&sc->cache_mutex, NULL,
     690    if (sc->cache == NULL)
     691    {
     692        sc->cache = apr_palloc(p, sizeof(struct mgs_cache));
     693        apr_status_t rv = ap_global_mutex_create(&sc->cache->mutex, NULL,
    693694                                                 MGS_CACHE_MUTEX_NAME,
    694695                                                 NULL, s, p, 0);
     
    697698    }
    698699
    699     sc->cache = apr_palloc(p, sizeof(struct mgs_cache));
    700700    if (sc->cache_type == mgs_cache_dbm || sc->cache_type == mgs_cache_gdbm)
    701701    {
     
    715715}
    716716
    717 #if HAVE_APR_MEMCACHE
    718717int mgs_cache_child_init(apr_pool_t * p,
    719718                         server_rec * s,
    720719                         mgs_srvconf_rec * sc)
    721 #else
    722 int mgs_cache_child_init(apr_pool_t * p __attribute__((unused)),
    723                          server_rec * s __attribute__((unused)),
    724                          mgs_srvconf_rec * sc)
    725 #endif
    726 {
     720{
     721    /* reinit cache mutex */
     722    const char *lockfile = apr_global_mutex_lockfile(sc->cache->mutex);
     723    apr_status_t rv = apr_global_mutex_child_init(&sc->cache->mutex,
     724                                                  lockfile, p);
     725    if (rv != APR_SUCCESS)
     726        ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s,
     727                     "Failed to reinit mutex '%s'", MGS_CACHE_MUTEX_NAME);
     728
    727729    if (sc->cache_type == mgs_cache_dbm
    728730            || sc->cache_type == mgs_cache_gdbm) {
Note: See TracChangeset for help on using the changeset viewer.