gpt4 book ai didi

openssl - SSL_read() 时是否需要处理 SSL_ERROR_WANT_WRITE?

转载 作者:行者123 更新时间:2023-12-02 19:07:22 56 4
gpt4 key购买 nike

我正在读一本 openssl 编程 tutorial .

我不能让服务器应用程序在单个连接的任何操作上被阻止,
因此我将使用非 block 套接字。

看来,ssl 握手发生在 ssl_accept 和 ssl_connect 处,
这可能会被阻止,我必须在 ssl_accept 调用之前将套接字设置为非阻止。

教程文档说我需要在 SSL_read 上处理 SSL_ERROR_WANT_WRITE(当然还有 SSL_ERROR_WANT_READ),因为 SSL 重新握手可能随时发生。
出于同样的原因,SSL_write 上的 SSL_ERROR_WANT_READ 也是如此。

来自文档,

We get a WANT_WRITE if we’re trying to rehandshake and we block on a write during that rehandshake.

We need to wait on the socket to be writeable but reinitiate the read when it is

我对“重新”握手感到困惑。
我不打算保存 ssl 状态并重用它(这称为 session 恢复?)第一次握手后,我将不必处理相同连接的握手问题。

当我不打算使用 session 恢复时,我是否仍然需要担心 SSL_read 上的 WANT_WRITE 问题,反之亦然。

谢谢

最佳答案

在连接过程中,任何一方都可以随时触发重新握手。它实际上与 session 恢复没有任何直接关系。

所以,是的,如果您希望应用程序可靠,那么无论您当前是在读取还是写入,都应该准备好处理 SSL_WANT_WRITESSL_WANT_READ

关于openssl - SSL_read() 时是否需要处理 SSL_ERROR_WANT_WRITE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589508/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com