如何清理坏的OpenSSL连接

时间:2010-08-31 14:59:27

标签: c++ c openssl

如果对SSL_accept的调用失败,我只想摆脱困境。

目前我正在调用SSL_shutdown然后调用SSL_free,但是自从实现这个以来,两个客户在OpenSSL中深陷崩溃(稍后调用SSL_accept时),所以我猜这可能不是最好的方法清理。

文档说SSL_shutdown用于正确清理,可能需要调用两次(尽管如果SSL_accept失败,我不认为会是这种情况)。 SSL_clear是另一种选择,但似乎更像是连接重置。

如果引用计数达到0,SSL_free会减少引用计数并删除连接。我知道我的代码没有任何引用,但“会话”可能会?

是否有使用OpenSSL完全关闭/关闭/释放SSL对象的明确方法?

1 个答案:

答案 0 :(得分:3)

SSL_free()对象上调用SSL后,您不应再次使用它。您需要确保使用SSL_new()为后续SSL_accept()创建新的SSL。