Changeset 0470e44 in mod_gnutls for src/gnutls_config.c


Ignore:
Timestamp:
Apr 22, 2018, 4:35:32 PM (3 years ago)
Author:
Fiona Klute <fiona.klute@…>
Branches:
debian/master, master, proxy-ticket
Children:
de1ceab
Parents:
7921dc7
Message:

Support common socache "type:config" style for GnuTLSCache directive

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/gnutls_config.c

    r7921dc7 r0470e44  
    580580#endif
    581581
    582 const char *mgs_set_cache(cmd_parms * parms, void *dummy __attribute__((unused)),
    583         const char *type, const char *arg) {
     582const char *mgs_set_cache(cmd_parms * parms,
     583                          void *dummy __attribute__((unused)),
     584                          const char *type, const char *arg)
     585{
    584586    const char *err;
    585587    mgs_srvconf_rec *sc =
    586         ap_get_module_config(parms->server->module_config,
    587                              &gnutls_module);
    588     if ((err = ap_check_cmd_context(parms, GLOBAL_ONLY))) {
    589         return err;
    590     }
    591 
    592     if (strcasecmp("none", type) == 0) {
    593         sc->cache_type = mgs_cache_none;
    594         sc->cache_config = NULL;
    595         return NULL;
    596     } else if (strcasecmp("dbm", type) == 0) {
    597         sc->cache_type = mgs_cache_dbm;
     588        ap_get_module_config(parms->server->module_config,
     589                             &gnutls_module);
     590    if ((err = ap_check_cmd_context(parms, GLOBAL_ONLY)))
     591        return err;
     592
     593    /* none: disable cache */
     594    if (strcasecmp("none", type) == 0)
     595    {
     596        sc->cache_type = mgs_cache_none;
     597        sc->cache_config = NULL;
     598        return NULL;
     599    }
     600
     601    /* Try to split socache "type:config" style configuration */
     602    const char* sep = ap_strchr_c(type, ':');
     603    if (sep)
     604    {
     605        type = apr_pstrmemdup(parms->temp_pool, type, sep - type);
     606        if (arg != NULL)
     607        {
     608            /* No mixing of socache style and legacy config! */
     609            return "GnuTLSCache appears to have a mod_socache style "
     610                "type:config value, but there is a second parameter!";
     611        }
     612        arg = ++sep;
     613    }
     614
     615    if (strcasecmp("dbm", type) == 0) {
     616        sc->cache_type = mgs_cache_dbm;
    598617    } else if (strcasecmp("gdbm", type) == 0) {
    599         sc->cache_type = mgs_cache_gdbm;
     618        sc->cache_type = mgs_cache_gdbm;
    600619    }
    601620#if HAVE_APR_MEMCACHE
    602621    else if (strcasecmp("memcache", type) == 0) {
    603         sc->cache_type = mgs_cache_memcache;
     622        sc->cache_type = mgs_cache_memcache;
    604623    }
    605624#endif
    606625    else {
    607         return "Invalid Type for GnuTLSCache!";
     626        return "Invalid Type for GnuTLSCache!";
    608627    }
    609628
    610629    if (arg == NULL)
    611         return "Invalid argument 2 for GnuTLSCache!";
     630        return "Invalid argument 2 for GnuTLSCache!";
    612631
    613632    if (sc->cache_type == mgs_cache_dbm
    614         || sc->cache_type == mgs_cache_gdbm) {
    615         sc->cache_config = ap_server_root_relative(parms->pool, arg);
     633        || sc->cache_type == mgs_cache_gdbm) {
     634        sc->cache_config = ap_server_root_relative(parms->pool, arg);
    616635    } else {
    617         sc->cache_config = apr_pstrdup(parms->pool, arg);
     636        sc->cache_config = apr_pstrdup(parms->pool, arg);
    618637    }
    619638
Note: See TracChangeset for help on using the changeset viewer.