尝试SSL_write时出现以下错误:
错误:1409F07F:SSL例程:SSL3_WRITE_PENDING:错误的写入重试
答案 0 :(得分:22)
原因很简单:当SSL_Write返回SSL_ERROR_WANT_WRITE或SSL_ERROR_WANT_READ时,您必须在满足条件后再次使用EXACT相同的参数重复调用SSL_write(在套接字上可读/写)。
使用不同的参数调用它将产生1409F07F错误的写入重试错误。
例如,当ptr = 0xABCDEFGH,size = 4096的SSL_write(ssl,ptr,size)因SSL_ERROR_WANT_READ或SSL_ERROR_WANT_WRITE而失败时,在重试SSL_write调用时,参数ptr和size应该相同。如果ptr是指向与原始调用中相同内容的副本的另一个指针,则它不等效。
但是,可以通过设置SSL_MODE_ENABLE_PARTIAL_WRITE和/或SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER来更改SSL_write的默认行为。
感谢@ShriramV的澄清评论,并将其整合到答案中