В моем приложении C ++ для связи с защищенными службами используется HTTPS-реализация libevent.
После каждого запроса использование памяти кучи увеличивается. Как я понял OpenSSL BIO не убран. Но bufferevent
создан с опцией BEV_OPT_CLOSE_ON_FREE
.
В документации сказано, что сокет SSL не отключается автоматически, поэтому я делаю это вручную при освобождении evhttp_connection
:
bufferevent *bev = evhttp_connection_get_bufferevent(evconn);
SSL *ssl = bufferevent_openssl_get_ssl(bev);
SSL_set_shutdown(ssl, SSL_RECEIVED_SHUTDOWN);
while(SSL_shutdown(ssl) == 0);
if(evconn != nullptr)
evhttp_connection_free(evconn);
Но память не освобождается.
Если я не определю bufferevent
в соединении, все в порядке.
Есть ли способ решить эту проблему?