diff options
Diffstat (limited to 'lib/gnutls_db.c')
-rw-r--r-- | lib/gnutls_db.c | 43 |
1 files changed, 13 insertions, 30 deletions
diff --git a/lib/gnutls_db.c b/lib/gnutls_db.c index 8b241a7b98..6abf2bba63 100644 --- a/lib/gnutls_db.c +++ b/lib/gnutls_db.c @@ -209,8 +209,7 @@ store_session (gnutls_session_t session, } /* if we can't read why bother writing? */ - if (session->internals.db_store_func != NULL) - ret = session->internals.db_store_func (session->internals.db_ptr, + ret = session->internals.db_store_func (session->internals.db_ptr, session_id, session_data); return (ret == 0 ? ret : GNUTLS_E_DB_ERROR); @@ -252,26 +251,6 @@ _gnutls_server_register_current_session (gnutls_session_t session) return ret; } -/* Retrieves session data from the db backend. - */ -static gnutls_datum_t -retrieve_session (gnutls_session_t session, gnutls_datum_t session_id) -{ - gnutls_datum_t ret = { NULL, 0 }; - - if (session_id.data == NULL || session_id.size == 0) - { - gnutls_assert (); - return ret; - } - - if (session->internals.db_retrieve_func != NULL) - ret = session->internals.db_retrieve_func (session->internals.db_ptr, - session_id); - - return ret; -} - int _gnutls_server_restore_session (gnutls_session_t session, uint8_t * session_id, int session_id_size) @@ -280,6 +259,12 @@ _gnutls_server_restore_session (gnutls_session_t session, gnutls_datum_t key; int ret; + if (session_id == NULL || session_id_size == 0) + { + gnutls_assert (); + return GNUTLS_E_INVALID_REQUEST; + } + if (session->internals.premaster_set != 0) { /* hack for CISCO's DTLS-0.9 */ if (session_id_size == session->internals.resumed_security_parameters.session_id_size && @@ -296,7 +281,8 @@ _gnutls_server_restore_session (gnutls_session_t session, return GNUTLS_E_INVALID_SESSION; } - data = retrieve_session (session, key); + data = session->internals.db_retrieve_func (session->internals.db_ptr, + key); if (data.data == NULL) { @@ -338,7 +324,7 @@ gnutls_db_remove_session (gnutls_session_t session) session_id.data = session->security_parameters.session_id; session_id.size = session->security_parameters.session_id_size; - if (session->internals.db_remove_func != NULL) + if (session->internals.db_remove_func == NULL) { gnutls_assert (); return /* GNUTLS_E_DB_ERROR */; @@ -351,11 +337,8 @@ gnutls_db_remove_session (gnutls_session_t session) } /* if we can't read why bother writing? */ - if (session->internals.db_remove_func != NULL) - { - ret = session->internals.db_remove_func (session->internals.db_ptr, + ret = session->internals.db_remove_func (session->internals.db_ptr, session_id); - if (ret != 0) - gnutls_assert (); - } + if (ret != 0) + gnutls_assert (); } |