}
/* 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);
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)
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 &&
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)
{
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 */;
}
/* 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 ();
}