X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=doc%2Fssl%2FSSL_free.pod;h=13c1abd9ecff3ab99a47ce2a7bd8606ebb6520b2;hb=3ffbe008083dcaad282622e8e4be69bb29bc6315;hp=3d01234a8579dc4831e771b3e9e93aed55675e0b;hpb=cc99526db1ee5b948736f6b07958a786fec1240b;p=oweals%2Fopenssl.git diff --git a/doc/ssl/SSL_free.pod b/doc/ssl/SSL_free.pod index 3d01234a85..13c1abd9ec 100644 --- a/doc/ssl/SSL_free.pod +++ b/doc/ssl/SSL_free.pod @@ -2,32 +2,43 @@ =head1 NAME -SSL_free - Free up an allocated SSL structure +SSL_free - free an allocated SSL structure =head1 SYNOPSIS #include - void *SSL_free(SSL *ssl); + void SSL_free(SSL *ssl); =head1 DESCRIPTION -SSL_free() decrements the reference count of B and removes the SSL -structure pointed to by B and frees up the allocated memory, if the -the reference count has reached 0. +SSL_free() decrements the reference count of B, and removes the SSL +structure pointed to by B and frees up the allocated memory if the +reference count has reached 0. -It also calls the free()ing procedures for indirectly affected items, if +=head1 NOTES + +SSL_free() also calls the free()ing procedures for indirectly affected items, if applicable: the buffering BIO, the read and write BIOs, -cipher lists especially created for this B, the SSL_SESSION. +cipher lists specially created for this B, the B. Do not explicitly free these indirectly freed up items before or after calling SSL_free(), as trying to free things twice may lead to program failure. +The ssl session has reference counts from two users: the SSL object, for +which the reference count is removed by SSL_free() and the internal +session cache. If the session is considered bad, because +L was not called for the connection +and L was not used to set the +SSL_SENT_SHUTDOWN state, the session will also be removed +from the session cache as required by RFC2246. + =head1 RETURN VALUES SSL_free() does not provide diagnostic information. L, L, +L, L, L =cut