Changeset b94aee2 in mod_gnutls


Ignore:
Timestamp:
Apr 28, 2018, 5:52:56 PM (19 months ago)
Author:
Fiona Klute <fiona.klute@…>
Branches:
debian/master, master
Children:
a314ec9
Parents:
2f949bc
Message:

Remove internal cache type enum

The cache type is now transparently passed to ap_lookup_provider(), so
mod_gnutls does not need to manage available cache types. The new
server variable sc->cache_enable exists to track whether the cache
should be used at all.

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • include/mod_gnutls.h.in

    r2f949bc rb94aee2  
    5757
    5858
    59 /* mod_gnutls Cache Types */
    60 typedef enum {
    61         /* No Cache */
    62     mgs_cache_none,
    63         /* Use Old Berkley DB */
    64     mgs_cache_dbm,
    65         /* Use Gnu's version of Berkley DB */
    66     mgs_cache_gdbm,
    67         /* Use Memcache */
    68     mgs_cache_memcache,
    69     mgs_cache_shmcb,
    70     mgs_cache_unset
    71 } mgs_cache_e;
    72 
    7359/* Internal cache data, defined in gnutls_cache.h */
    7460typedef struct mgs_cache* mgs_cache_t;
     
    131117    int cache_timeout;
    132118        /* Chose Cache Type */
    133     mgs_cache_e cache_type;
     119    const char* cache_type;
     120    /* Enable cache */
     121    unsigned char cache_enable : 2;
    134122    const char* cache_config;
    135123    /* Internal cache data */
     
    185173        /* Client Certificate Verification Method */
    186174    mgs_client_verification_method_e client_verify_method;
    187         /* Last Cache timestamp */
    188     apr_time_t last_cache_check;
    189175
    190176    /* Enable OCSP stapling */
  • src/gnutls_cache.c

    r2f949bc rb94aee2  
    313313{
    314314    apr_status_t rv = APR_SUCCESS;
    315     /* if GnuTLSCache was never explicitly set: */
    316     if (sc->cache_type == mgs_cache_unset || sc->cache_type == mgs_cache_none)
    317     {
    318         sc->cache_type = mgs_cache_none;
     315    /* GnuTLSCache was never explicitly set or is disabled: */
     316    if (sc->cache_enable == GNUTLS_ENABLED_UNSET
     317        || sc->cache_enable == GNUTLS_ENABLED_FALSE)
     318    {
     319        sc->cache_enable = GNUTLS_ENABLED_FALSE;
    319320        /* Cache disabled, done. */
    320321        return APR_SUCCESS;
     
    324325        sc->cache_timeout = apr_time_from_sec(MGS_DEFAULT_CACHE_TIMEOUT);
    325326
    326     /* initialize mutex only once */
     327    /* initialize cache structure and mutex if needed */
    327328    if (sc->cache == NULL)
    328329    {
    329         sc->cache = apr_palloc(pconf, sizeof(struct mgs_cache));
     330        sc->cache = apr_pcalloc(pconf, sizeof(struct mgs_cache));
    330331        rv = ap_global_mutex_create(&sc->cache->mutex, NULL,
    331332                                    MGS_CACHE_MUTEX_NAME,
     
    335336    }
    336337
    337     char *pname = NULL;
    338 
    339     if (sc->cache_type == mgs_cache_dbm || sc->cache_type == mgs_cache_gdbm)
    340         pname = "dbm";
    341     else if (sc->cache_type == mgs_cache_memcache)
    342         pname = "memcache";
    343     else if (sc->cache_type == mgs_cache_shmcb)
    344         pname = "shmcb";
    345 
    346338    /* Find the right socache provider */
    347339    sc->cache->prov = ap_lookup_provider(AP_SOCACHE_PROVIDER_GROUP,
    348                                          pname,
     340                                         sc->cache_type,
    349341                                         AP_SOCACHE_PROVIDER_VERSION);
    350342    if (sc->cache->prov)
     
    358350            ap_log_error(APLOG_MARK, APLOG_EMERG, APR_EGENERAL, s,
    359351                         "Creating cache '%s:%s' failed: %s",
    360                          pname, sc->cache_config, err);
     352                         sc->cache_type, sc->cache_config, err);
    361353            return HTTP_INSUFFICIENT_STORAGE;
    362354        }
    363355        ap_log_error(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, s,
    364                      "%s: Socache '%s' created.", __func__, pname);
     356                     "%s: Socache '%s' created.", __func__, sc->cache_type);
    365357
    366358        // TODO: provide hints
     
    371363            ap_log_error(APLOG_MARK, APLOG_EMERG, rv, s,
    372364                         "Initializing cache '%s:%s' failed!",
    373                          pname, sc->cache_config);
     365                         sc->cache_type, sc->cache_config);
    374366            return HTTP_INSUFFICIENT_STORAGE;
    375367        }
    376368        ap_log_error(APLOG_MARK, APLOG_DEBUG, APR_SUCCESS, s,
    377369                     "%s: socache '%s:%s' created.", __func__,
    378                      pname, sc->cache_config);
     370                     sc->cache_type, sc->cache_config);
    379371    }
    380372    else
     
    383375                     "Could not find socache provider '%s', please make sure "
    384376                     "that the provider name is valid and the "
    385                      "appropriate mod_socache submodule is loaded.", pname);
     377                     "appropriate mod_socache submodule is loaded.",
     378                     sc->cache_type);
    386379        return HTTP_NOT_FOUND;
    387380    }
     
    409402int mgs_cache_session_init(mgs_handle_t * ctxt)
    410403{
    411     if (ctxt->sc->cache_type != mgs_cache_none)
     404    if (ctxt->sc->cache_enable)
    412405    {
    413406        gnutls_db_set_retrieve_function(ctxt->session,
  • src/gnutls_config.c

    r2f949bc rb94aee2  
    594594    if (strcasecmp("none", type) == 0)
    595595    {
    596         sc->cache_type = mgs_cache_none;
     596        sc->cache_enable = GNUTLS_ENABLED_FALSE;
     597        sc->cache_type = NULL;
    597598        sc->cache_config = NULL;
    598599        return NULL;
    599600    }
     601
     602    sc->cache_enable = GNUTLS_ENABLED_TRUE;
    600603
    601604    /* Try to split socache "type:config" style configuration */
     
    603606    if (sep)
    604607    {
    605         type = apr_pstrmemdup(parms->temp_pool, type, sep - type);
     608        sc->cache_type = apr_pstrmemdup(parms->pool, type, sep - type);
    606609        if (arg != NULL)
    607610        {
     
    612615        arg = ++sep;
    613616    }
    614 
    615     if (strcasecmp("dbm", type) == 0) {
    616         sc->cache_type = mgs_cache_dbm;
    617     } else if (strcasecmp("gdbm", type) == 0) {
    618         sc->cache_type = mgs_cache_gdbm;
    619     }
    620     else if (strcasecmp("memcache", type) == 0) {
    621         sc->cache_type = mgs_cache_memcache;
    622     }
    623     else if (strcasecmp("shmcb", type) == 0) {
    624         sc->cache_type = mgs_cache_shmcb;
    625     }
    626     else {
    627         return "Invalid Type for GnuTLSCache!";
    628     }
     617    else
     618        sc->cache_type = apr_pstrdup(parms->pool, type);
    629619
    630620    if (arg == NULL)
    631         return "Invalid argument 2 for GnuTLSCache!";
    632 
    633     if (sc->cache_type == mgs_cache_dbm
    634         || sc->cache_type == mgs_cache_gdbm) {
    635         sc->cache_config = ap_server_root_relative(parms->pool, arg);
    636     } else {
     621        sc->cache_config = "";
     622    else
    637623        sc->cache_config = apr_pstrdup(parms->pool, arg);
    638     }
    639624
    640625    return NULL;
     
    880865    sc->priorities_str = NULL;
    881866    sc->cache_timeout = MGS_TIMEOUT_UNSET;
    882     sc->cache_type = mgs_cache_unset;
     867    sc->cache_type = NULL;
     868    sc->cache_enable = GNUTLS_ENABLED_UNSET;
    883869    sc->cache_config = NULL;
    884870    sc->cache = NULL;
  • src/gnutls_hooks.c

    r2f949bc rb94aee2  
    629629        sc = (mgs_srvconf_rec *) ap_get_module_config(s->module_config, &gnutls_module);
    630630        sc->cache_type = sc_base->cache_type;
     631        sc->cache_enable = sc_base->cache_enable;
    631632        sc->cache_config = sc_base->cache_config;
    632633        sc->cache_timeout = sc_base->cache_timeout;
     
    774775    }
    775776
    776     if (sc->cache_type != mgs_cache_none) {
     777    if (sc->cache_enable) {
    777778        rv = mgs_cache_child_init(p, s, sc);
    778779        if (rv != APR_SUCCESS) {
Note: See TracChangeset for help on using the changeset viewer.