Как правильно очищать буферные буферы клиентского сайта libevent HTTPS? - PullRequest
0 голосов
/ 30 августа 2018

В моем приложении 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 в соединении, все в порядке.

Есть ли способ решить эту проблему?

...