【发布时间】:2016-06-04 10:33:29
【问题描述】:
我正在尝试将 OpenSSL 添加到 epoll 中,并且套接字处于非阻塞模式。
一个令我困惑的问题是:SSL_read 可能会产生 SSL_ERROR_WANT_WRITE 和 SSL_write 可能会产生 SSL_ERROR_WANT_READ,因为 SSL 重新协商。
所以,我的问题是:
如果 SSL_read 产生
SSL_ERROR_WANT_WRITE,我将套接字事件修改为EPOLLOUT。那么,当套接字稍后变为可写时,我应该调用什么,SSL_read或SSL_write? (API 文档说必须重复相同的操作)与问题(1)类似,案例为
SSL_writeyieldSSL_ERROR_WANT_READ。如果
SSL_read产生SSL_ERROR_WANT_WRITE,接下来我可以调用SSL_send发送数据吗? (TCP是全双工的,但是OpenSSL好像不能独立读写……)与问题(3)类似,案例为
SSL_writeyieldSSL_ERROR_WANT_READ。
非常感谢!
【问题讨论】: