=pod

=head1 NAME

SSL_CTX_sessions - access internal session cache

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 struct lhash_st *SSL_CTX_sessions(SSL_CTX *ctx);

=head1 DESCRIPTION

SSL_CTX_sessions() returns a pointer to the lhash databases containing the
internal session cache for B<ctx>.

=head1 NOTES

The sessions in the internal session cache are kept in an
L<lhash(3)|lhash(3)> type database. It is possible to directly
access this database e.g. for searching. In parallel, the sessions
form a linked list which is maintained separately from the
L<lhash(3)|lhash(3)> operations, so that the database must not be
modified directly but by using the
L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)> family of functions.

=head1 SEE ALSO

L<ssl(3)|ssl(3)>, L<lhash(3)|lhash(3)>,
L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)>,
L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>

=cut
