summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2013-02-01 20:22:09 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2013-02-01 20:31:15 +0100
commit4d018d3c1ca3a239302faa29cd7120878b25c278 (patch)
treee218962723728c5952c11aef1ffdc17644a28633
parentef15e8f3e95ceadab598375a77ceb354928f1aea (diff)
downloadgnutls-4d018d3c1ca3a239302faa29cd7120878b25c278.tar.gz
simplified DB storing
-rw-r--r--lib/gnutls_db.c43
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 ();
}