什么是清除libevent HTTPS客户端的bufferevent缓冲区的正确方法

时间:2018-08-30 05:59:06

标签: c++ https openssl libevent

我的C ++应用程序使用libevent的HTTPS实现与安全服务进行通信。

在每个请求之后,堆内存的使用量增加。据我了解,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定义为连接,则一切正常。

有没有办法解决这个问题?

0 个答案:

没有答案