使用 epoll 和 openssl 的非阻塞套接字是否可能导致死循环?

Could non-blocking socket using epoll and openssl possibly cause dead loop?

提问人:benrush 提问时间:11/16/2023 更新时间:11/16/2023 访问量:33

问:

我想知道以下情况是否会导致死循环:

  1. 在客户端和服务器之间建立了非阻塞 TCP 连接,并且服务器正在使用 epoll 接收其可读事件

  2. 客户端向服务器发送了一些数据,但这些数据足以让底层 OPENSSL 的 BIO 满足函数继续运行的需求,因此当服务器在其上使用 SSL_read() 时,它会生成SSL_ERROR_WANT_READ错误代码

  3. 此时,客户端不会继续传输任何新数据,在服务器端,由于还有一些数据需要读取,因此始终会触发EPOLL_IN,并且结果将始终SSL_ERROR_WANT_READ,从而导致它可能是一个死循环

OpenSSL 网络编程 epoll

评论


答: 暂无答案