diff --git a/ssl/tls1.c b/ssl/tls1.c index 93afe8ce5..59801a995 100644 --- a/ssl/tls1.c +++ b/ssl/tls1.c @@ -226,7 +226,9 @@ EXP_FUNC void STDCALL ssl_free(SSL *ssl) /* may already be free - but be sure */ free(ssl->encrypt_ctx); + ssl->encrypt_ctx = NULL; free(ssl->decrypt_ctx); + ssl->decrypt_ctx = NULL; disposable_free(ssl); certificate_free(ssl); free(ssl->bm_all_data); @@ -1345,8 +1347,8 @@ int basic_read(SSL *ssl, uint8_t **in_data) buf[1] == SSL_ALERT_CLOSE_NOTIFY) { ret = SSL_CLOSE_NOTIFY; - ssl_free(ssl); - SOCKET_CLOSE(ssl->client_fd); + send_alert(ssl, SSL_ALERT_CLOSE_NOTIFY); + SET_SSL_FLAG(SSL_SENT_CLOSE_NOTIFY); } else {