=pod

=head1 NAME

SSL_CTX_sess_set_cache_size, SSL_CTX_sess_get_cache_size - manipulate session cache size

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 long SSL_CTX_sess_set_cache_size(SSL_CTX *ctx, long t);
 long SSL_CTX_sess_get_cache_size(SSL_CTX *ctx);

=head1 DESCRIPTION

SSL_CTX_sess_set_cache_size() sets the size of the internal session cache
of context B<ctx> to B<t>.

SSL_CTX_sess_get_cache_size() returns the currently valid session cache size.

=head1 NOTES

The internal session cache size is SSL_SESSION_CACHE_MAX_SIZE_DEFAULT,
currently 1024*20, so that up to 20000 sessions can be held. This size
can be modified using the SSL_CTX_sess_set_cache_size() call. A special
case is the size 0, which is used for unlimited size.

When the maximum number of sessions is reached, no more new sessions are
added to the cache. New space may be added by calling
L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)> to remove
expired sessions.

If the size of the session cache is reduced and more sessions are already
in the session cache, old session will be removed at the next time a
session shall be added. This removal is not synchronized with the
expiration of sessions.

=head1 RETURN VALUES

SSL_CTX_sess_set_cache_size() returns the previously valid size.

SSL_CTX_sess_get_cache_size() returns the currently valid size.

=head1 SEE ALSO

L<ssl(3)|ssl(3)>,
L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>,
L<SSL_CTX_sess_number(3)|SSL_CTX_sess_number(3)>,
L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)>

=cut
