|
@@ -10491,6 +10491,7 @@ sslize(struct mg_connection *conn, SSL_CTX *s, int (*func)(SSL *))
|
|
(void)err; /* TODO: set some error message */
|
|
(void)err; /* TODO: set some error message */
|
|
SSL_free(conn->ssl);
|
|
SSL_free(conn->ssl);
|
|
conn->ssl = NULL;
|
|
conn->ssl = NULL;
|
|
|
|
+ CRYPTO_cleanup_all_ex_data();
|
|
ERR_remove_state(0);
|
|
ERR_remove_state(0);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -10501,6 +10502,7 @@ sslize(struct mg_connection *conn, SSL_CTX *s, int (*func)(SSL *))
|
|
(void)err; /* TODO: set some error message */
|
|
(void)err; /* TODO: set some error message */
|
|
SSL_free(conn->ssl);
|
|
SSL_free(conn->ssl);
|
|
conn->ssl = NULL;
|
|
conn->ssl = NULL;
|
|
|
|
+ CRYPTO_cleanup_all_ex_data();
|
|
ERR_remove_state(0);
|
|
ERR_remove_state(0);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -10862,6 +10864,7 @@ uninitialize_ssl(struct mg_context *ctx)
|
|
ERR_free_strings();
|
|
ERR_free_strings();
|
|
EVP_cleanup();
|
|
EVP_cleanup();
|
|
CRYPTO_cleanup_all_ex_data();
|
|
CRYPTO_cleanup_all_ex_data();
|
|
|
|
+ ERR_remove_state(0);
|
|
|
|
|
|
for (i = 0; i < CRYPTO_num_locks(); i++) {
|
|
for (i = 0; i < CRYPTO_num_locks(); i++) {
|
|
pthread_mutex_destroy(&ssl_mutexes[i]);
|
|
pthread_mutex_destroy(&ssl_mutexes[i]);
|
|
@@ -11061,6 +11064,7 @@ close_connection(struct mg_connection *conn)
|
|
*/
|
|
*/
|
|
SSL_shutdown(conn->ssl);
|
|
SSL_shutdown(conn->ssl);
|
|
SSL_free(conn->ssl);
|
|
SSL_free(conn->ssl);
|
|
|
|
+ CRYPTO_cleanup_all_ex_data();
|
|
ERR_remove_state(0);
|
|
ERR_remove_state(0);
|
|
conn->ssl = NULL;
|
|
conn->ssl = NULL;
|
|
}
|
|
}
|