鉴于以下情况:
SSL_read()
一次解析一个(以及足够大的缓冲区来保存它们)。请SSL_shutdown()
丢弃我尚未调用SSL_read()
读取的套接字上的任何剩余SSL读取数据,或者我是否始终需要继续调用SSL_read()
直到它会产生SSL_ERROR_WANT_READ
(这会浪费CPU周期来提取我甚至不再关心的数据),然后调用SSL_shutdown()
?
我担心的是SSL_shutdown()
也可以产生SSL_ERROR_WANT_READ
(至少根据手册页),但如果由于某种原因,套接字上仍有未读数据,我不一定会因为我使用epoll_wait()
的方式而被通知新传入的数据包。
答案 0 :(得分:0)
检查了openssl的ssl_shutdown代码以及文档..没有提到作为关闭的一部分完成的清理。它似乎只向对等体发送关闭通知并将状态设置为适当的状态。
我觉得当你调用SSL_free(ssl)时,你正在寻找的清理工作将会完成。 (只是我的想法,因为没有深入检查免费代码)。