3
如果对SSL_accept的调用失败,我只想保释出来。如何清理糟糕的OpenSSL连接
目前我打电话给SSL_shutdown,然后是SSL_free,但是自从实现这个以来,两位客户在OpenSSL内部发生了崩溃(稍后调用SSL_accept时),所以我猜测这可能不是最好的清理方法。
该文档说SSL_shutdown用于正确清理,它可能需要调用两次(尽管如果SSL_accept失败,我不认为这将是这种情况)。 SSL_clear是另一种选择,但它似乎更像是一个连接重置。
SSL_free递减引用计数并在引用计数达到0时删除连接。我知道我的代码没有任何引用,但'会话'可能?
使用OpenSSL完全关闭/关闭/释放SSL对象是否存在确定的方法?
我绝对不会在调用SSL_free后重用SSL *。 所以一旦我打电话给SSL_free(),这就是我必须要清理它?不管以前发生过什么错误或连接? – DougN 2010-09-01 22:15:05
@DougN:正确。请注意,'SSL_free()'也释放了底层的BIO - 这可能是你问题的根源吗? – caf 2010-09-01 22:56:12
我99%确定BIO没有被释放。据我所知,它只是SSL_shutdown,然后是SSL_free。然后再没有任何东西被触动猜猜我做的是对的(但会仔细检查BIO) - 希望崩溃只是真相......感谢您的帮助。 – DougN 2010-09-02 12:58:36