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