Merge contexts for session cache
diff --git a/ChangeLog b/ChangeLog
index 8957110..0b3735c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,8 @@
mbedtls_ctr_drbg_init() -> mbedtls_ctr_drbg_init(_buf)()
* mbedtls_ssl_set_ca_chain() lost its last argument (peer_cn), now set
using mbedtls_ssl_set_hostname().
+ * mbedtls_ssl_set_session_cached() changed prototype (only one context
+ pointer, parameters reordered).
* mbedtls_memory_bufer_alloc_init() now returns void
* In the threading layer, mbedtls_mutex_init() and mbedtls_mutex_free() now
return void.
diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h
index 6ab2dd2..b72ba92 100644
--- a/include/mbedtls/ssl.h
+++ b/include/mbedtls/ssl.h
@@ -807,10 +807,9 @@
/** Callback to retrieve a session from the cache */
int (*f_get_cache)(void *, mbedtls_ssl_session *);
- void *p_get_cache; /*!< context for cache retrieval */
/** Callback to store a session into the cache */
int (*f_set_cache)(void *, const mbedtls_ssl_session *);
- void *p_set_cache; /*!< context for cache store */
+ void *p_cache; /*!< context for cache callbacks */
#if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION)
/** Callback for setting cert according to SNI extension */
@@ -1482,14 +1481,14 @@
* successfully cached, return 1 otherwise.
*
* \param conf SSL configuration
+ * \param p_cache parmater (context) for both callbacks
* \param f_get_cache session get callback
- * \param p_get_cache session get parameter
* \param f_set_cache session set callback
- * \param p_set_cache session set parameter
*/
void mbedtls_ssl_set_session_cache( mbedtls_ssl_config *conf,
- int (*f_get_cache)(void *, mbedtls_ssl_session *), void *p_get_cache,
- int (*f_set_cache)(void *, const mbedtls_ssl_session *), void *p_set_cache );
+ void *p_cache,
+ int (*f_get_cache)(void *, mbedtls_ssl_session *),
+ int (*f_set_cache)(void *, const mbedtls_ssl_session *) );
#endif /* MBEDTLS_SSL_SRV_C */
#if defined(MBEDTLS_SSL_CLI_C)
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index c537fe4..fd2ee93 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -2475,7 +2475,7 @@
#endif
ssl->session_negotiate->length != 0 &&
ssl->conf->f_get_cache != NULL &&
- ssl->conf->f_get_cache( ssl->conf->p_get_cache, ssl->session_negotiate ) == 0 )
+ ssl->conf->f_get_cache( ssl->conf->p_cache, ssl->session_negotiate ) == 0 )
{
MBEDTLS_SSL_DEBUG_MSG( 3, ( "session successfully restored from cache" ) );
ssl->handshake->resume = 1;
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index c0f5292..85aa276 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4575,7 +4575,7 @@
ssl->session->length != 0 &&
resume == 0 )
{
- if( ssl->conf->f_set_cache( ssl->conf->p_set_cache, ssl->session ) != 0 )
+ if( ssl->conf->f_set_cache( ssl->conf->p_cache, ssl->session ) != 0 )
MBEDTLS_SSL_DEBUG_MSG( 1, ( "cache did not store session" ) );
}
@@ -5245,13 +5245,13 @@
#if defined(MBEDTLS_SSL_SRV_C)
void mbedtls_ssl_set_session_cache( mbedtls_ssl_config *conf,
- int (*f_get_cache)(void *, mbedtls_ssl_session *), void *p_get_cache,
- int (*f_set_cache)(void *, const mbedtls_ssl_session *), void *p_set_cache )
+ void *p_cache,
+ int (*f_get_cache)(void *, mbedtls_ssl_session *),
+ int (*f_set_cache)(void *, const mbedtls_ssl_session *) )
{
+ conf->p_cache = p_cache;
conf->f_get_cache = f_get_cache;
- conf->p_get_cache = p_get_cache;
conf->f_set_cache = f_set_cache;
- conf->p_set_cache = p_set_cache;
}
#endif /* MBEDTLS_SSL_SRV_C */
diff --git a/programs/ssl/dtls_server.c b/programs/ssl/dtls_server.c
index ef899e4..6ad4e66 100644
--- a/programs/ssl/dtls_server.c
+++ b/programs/ssl/dtls_server.c
@@ -210,9 +210,9 @@
mbedtls_ssl_set_dbg( &conf, my_debug, stdout );
#if defined(MBEDTLS_SSL_CACHE_C)
- mbedtls_ssl_set_session_cache( &conf,
- mbedtls_ssl_cache_get, &cache,
- mbedtls_ssl_cache_set, &cache );
+ mbedtls_ssl_set_session_cache( &conf, &cache,
+ mbedtls_ssl_cache_get,
+ mbedtls_ssl_cache_set );
#endif
mbedtls_ssl_set_ca_chain( &conf, srvcert.next, NULL );
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index c11fbd5..9313a88 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -209,9 +209,9 @@
mbedtls_ssl_set_dbg( &conf, my_debug, stdout );
#if defined(MBEDTLS_SSL_CACHE_C)
- mbedtls_ssl_set_session_cache( &conf,
- mbedtls_ssl_cache_get, &cache,
- mbedtls_ssl_cache_set, &cache );
+ mbedtls_ssl_set_session_cache( &conf, &cache,
+ mbedtls_ssl_cache_get,
+ mbedtls_ssl_cache_set );
#endif
mbedtls_ssl_set_ca_chain( &conf, srvcert.next, NULL );
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index 68fc81e..9a6d7f3 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -1584,9 +1584,9 @@
if( opt.cache_timeout != -1 )
mbedtls_ssl_cache_set_timeout( &cache, opt.cache_timeout );
- mbedtls_ssl_set_session_cache( &conf,
- mbedtls_ssl_cache_get, &cache,
- mbedtls_ssl_cache_set, &cache );
+ mbedtls_ssl_set_session_cache( &conf, &cache,
+ mbedtls_ssl_cache_get,
+ mbedtls_ssl_cache_set );
#endif
#if defined(MBEDTLS_SSL_SESSION_TICKETS)