Fix ssl_free() and thus BIO_free() to respect BIO_NOCLOSE
@@ -76,13 +76,12 @@ static int ssl_free(BIO *a)
if (a == NULL)
return 0;
bs = BIO_get_data(a);
+ if (BIO_get_shutdown(a)) {
if (bs->ssl != NULL)
SSL_shutdown(bs->ssl);
- if (BIO_get_shutdown(a)) {
if (BIO_get_init(a))
SSL_free(bs->ssl);
- /* Clear all flags */
- BIO_clear_flags(a, ~0);
+ BIO_clear_flags(a, ~0); /* Clear all flags */
BIO_set_init(a, 0);
}
OPENSSL_free(bs);
