【发布时间】:2016-09-19 08:32:11
【问题描述】:
请考虑以下一段代码,它显示了尝试从 ssl 连接读取 buff_size 字节。
int bytes = SSL_read(m_ssl, buf, buff_size);
int err = SSL_get_error(m_ssl, bytes);
int err2 = ERR_get_error();
在某些情况下,变量 err 表示上述代码中的有效错误,而 err2 则表现得好像根本没有错误 (=0)。
例如,这是我在测试中遇到的一个案例:当SSL_read 尝试读取 0 字节(缓冲区大小 = 字节 = 0)时,err 将显示 SSL_ERROR_SYSCALL。但是err2 仍然为0,表示没有真正的错误。 SSL_read 返回此值只是为了表明 0 字节已写入 buf。
是否还有更多这样的特殊情况,err 指出可能有问题,但读取结果没有读取错误?
【问题讨论】: