在哪里(如果)我清理BIO_new_socket返回的BIO?

时间:2016-02-15 11:28:21

标签: c++ openssl

我使用openSSL来实现一个安全的服务器,但我在文档上有点挣扎。

对于服务器I的每个连接:

  • 创建SSL:mp_ssl = SSL_new(...)
  • 创建一个BIO:BIO* lp_bio = BIO_new_socket(..., BIO_NOCLOSE);
  • 设置BIO:SSL_set_bio(mp_ssl, lp_bio, lp_bio);
  • 接受:SSL_accept(mp_ssl);

连接终止时

  • 清理:SSL_free(mp_ssl);

现在一切正常,但我的内存泄漏了。我想知道是否有人可以向我解释是否和/或何时我需要自己清理BIO *,或者这可能是在SSL_free(...)时完成的?

FWIW - 我在完成TCP / IP接受后在(主)线程中创建SSL *,但BIO和SSL_Accept是使用工作线程完成的(我有一些时间问题,设置SSL握手是阻塞的我的主线太长了)

0 个答案:

没有答案
相关问题