33extern module AP_MODULE_DECLARE_DATA tls_module;
36#define TLS_CACHE_DEF_PROVIDER "shmcb"
37#define TLS_CACHE_DEF_DIR "tls"
38#define TLS_CACHE_DEF_FILE "session_cache"
39#define TLS_CACHE_DEF_SIZE 512000
50 "(known names: %s). Maybe you need to load the "
51 "appropriate socache module (mod_socache_%s?).",
71 if (
gconf->session_cache) {
78 "session cache explicitly disabled");
84#if AP_MODULE_MAGIC_AT_LEAST(20180906, 2)
89 gconf->session_cache_spec =
"shmcb:mod_tls-sesss(64000)";
93 "Using session cache: %s",
gconf->session_cache_spec);
102 if (!
gconf->session_cache_provider) {
110 && !
gconf->session_cache_mutex) {
133 gconf->session_cache_spec = spec;
146 "session cache [%s] could not be initialized, will continue "
147 "without session one. Since this will impact performance, "
148 "consider making use of the 'TLSSessionCache' directive. The "
158 hints.avg_obj_size = 100;
159 hints.avg_id_len = 33;
160 hints.expiry_interval = 30;
166 "error initializing session cache.");
183 "Cannot reinit %s mutex (file `%s`)",
199 if (
gconf->session_cache_mutex) {
203 "Failed to acquire TLS session cache lock");
210 if (
gconf->session_cache_mutex) {
214 "Failed to release TLS session cache lock");
232 const unsigned char *
kdata;
275 const unsigned char *
kdata;
286 (
unsigned char*)
val->data,
vlen,
c->pool);
289 "stored %d key bytes, with %d val bytes",
klen,
vlen);
Small object cache provider interface.
APR general purpose library routines.
static apr_pool_t * pconf
#define APLOG_USE_MODULE(foo)
request_rec int int apr_table_t const char * path
const unsigned char * buf
apr_status_t ap_global_mutex_create(apr_global_mutex_t **mutex, const char **name, const char *type, const char *instance_id, server_rec *server, apr_pool_t *pool, apr_int32_t options)
apr_status_t ap_mutex_register(apr_pool_t *pconf, const char *type, const char *default_dir, apr_lockmech_e default_mech, apr_int32_t options)
apr_array_header_t * ap_list_provider_names(apr_pool_t *pool, const char *provider_group, const char *provider_version)
void * ap_lookup_provider(const char *provider_group, const char *provider_name, const char *provider_version)
#define APR_STATUS_IS_NOTFOUND(s)
#define AP_SOCACHE_PROVIDER_GROUP
#define AP_SOCACHE_FLAG_NOTMPSAFE
#define AP_SOCACHE_PROVIDER_VERSION
void const char apr_status_t(* cleanup)(void *))
apr_vformatter_buff_t * c
apr_int32_t apr_int32_t apr_int32_t err
const char const char *const * args
#define apr_time_from_sec(sec)
Apache connection library.
apr_status_t(* store)(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_time_t expiry, unsigned char *data, unsigned int datalen, apr_pool_t *pool)
apr_status_t(* remove)(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, apr_pool_t *pool)
void(* destroy)(ap_socache_instance_t *instance, server_rec *s)
apr_status_t(* init)(ap_socache_instance_t *instance, const char *cname, const struct ap_socache_hints *hints, server_rec *s, apr_pool_t *pool)
apr_status_t(* retrieve)(ap_socache_instance_t *instance, server_rec *s, const unsigned char *id, unsigned int idlen, unsigned char *data, unsigned int *datalen, apr_pool_t *pool)
Structure to store things which are per connection.
A structure to store information for each virtual server.
const struct ap_socache_provider_t * session_cache_provider
const char * session_cache_spec
struct apr_global_mutex_t * session_cache_mutex
struct ap_socache_instance_t * session_cache
tls_conf_global_t * global
static rustls_result tls_cache_get(void *userdata, const rustls_slice_bytes *key, int remove_after, unsigned char *buf, size_t count, size_t *out_n)
static rustls_result tls_cache_put(void *userdata, const rustls_slice_bytes *key, const rustls_slice_bytes *val)
#define TLS_CACHE_DEF_SIZE
void tls_cache_free(server_rec *s)
static void tls_cache_lock(tls_conf_global_t *gconf)
void tls_cache_pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
const char * tls_cache_set_specification(const char *spec, tls_conf_global_t *gconf, apr_pool_t *p, apr_pool_t *ptemp)
static void tls_cache_unlock(tls_conf_global_t *gconf)
apr_status_t tls_cache_init_server(rustls_server_config_builder *builder, server_rec *s)
apr_status_t tls_cache_post_config(apr_pool_t *p, apr_pool_t *ptemp, server_rec *s)
void tls_cache_init_child(apr_pool_t *p, server_rec *s)
static const char * cache_provider_unknown(const char *name, apr_pool_t *p)
#define TLS_CACHE_DEF_PROVIDER
static const char * cache_init(tls_conf_global_t *gconf, apr_pool_t *p, apr_pool_t *ptemp)
#define TLS_CACHE_DEF_DIR
#define TLS_CACHE_DEF_FILE
#define TLS_SESSION_CACHE_MUTEX_TYPE
tls_conf_server_t * tls_conf_server_get(server_rec *s)
tls_conf_conn_t * tls_conf_conn_get(conn_rec *c)
Apache Mutex support library.
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray