【发布时间】:2011-08-01 03:54:59
【问题描述】:
我正在阅读一个openssl 编程tutorial。
我不能让服务器应用程序在单个连接的任何操作上被阻止,
因此我将使用非阻塞套接字。
看起来,ssl 握手发生在 ssl_accept 和 ssl_connect,
这可能会被阻止,我必须在 ssl_accept 调用之前将套接字设置为非阻塞。
教程文档说我需要在 SSL_read 上处理 SSL_ERROR_WANT_WRITE(当然还有 SSL_ERROR_WANT_READ),因为 SSL 重新握手可以随时发生。
出于同样的原因,SSL_write 上的 SSL_ERROR_WANT_READ。
来自文档,
如果我们尝试,我们会得到 WANT_WRITE 重新握手,我们阻止了 在重新握手期间写。
我们需要等待套接字 可写但重新启动读取 什么时候
我对“重新”握手感到困惑。
我不打算保存 ssl 状态并重用它(这称为会话恢复?)
在第一次握手之后,我不必为同一个连接处理握手。
当我不打算使用会话恢复时,我想知道是否还需要担心 SSL_read 上的 WANT_WRITE,反之亦然。
谢谢
【问题讨论】:
标签: openssl nonblocking handshake