SSL_SESSION_free - Free an allocated SSL_SESSION structure
SSL_SESSION *session );
The SSL_SESSION_free() function decrements the reference
count of session and removes the SSL_SESSION structure
pointed to by session and frees up the allocated memory,
if the the reference count has reached 0.
SSL_SESSION objects are allocated when a TLS/SSL handshake
operation is successfully completed. Depending on the settings
(see SSL_CTX_set_session_cache_mode()), the SSL_SESSION
objects are internally referenced by the SSL_CTX and
linked into its session cache. SSL objects may be using
the SSL_SESSION object; as a session may be reused, several
SSL objects may be using one SSL_SESSION object at
the same time. Therefore, it is crucial to keep the reference
count (usage information) correct and not delete an
SSL_SESSION object that is still used. Otherwise, this
might lead to program failures due to dangling pointers.
These failures may also appear delayed. For example, this
could happen when an SSL_SESSION object was completely
freed as the reference count incorrectly became 0, but it
is still referenced in the internal session cache and the
cache list is processed during a SSL_CTX_flush_sessions()
The SSL_SESSION_free() function can only be called for
SSL_SESSION objects for which the reference count was
explicitly incremented (e.g. by calling SSL_get1_session().
See SSL_get_session().) or when the SSL_SESSION
object was generated outside a TLS handshake operation,
e.g. by using d2i_SSL_SESSION(). It must not be called on
other SSL_SESSION objects; this would cause incorrect reference
counts and program failures.
The SSL_SESSION_free() function does not provide diagnostic
Functions: ssl(3), SSL_get_session(3), SSL_CTX_set_session_cache_mode(3), SSL_CTX_flush_sessions(3),
[ Back ]