Почему я получаю ошибку "1409F07F: Процедуры SSL: ошибка SSL3_WRITE_PENDING: плохой записи" при попытке SSL_write?

При попытке SSL_write получить следующую ошибку:

error: 1409F07F: Подпрограммы SSL: SSL3_WRITE_PENDING: неудачная попытка записи

Ответы

Ответ 1

Причина довольно проста: когда SSL_Write возвращается с SSL_ERROR_WANT_WRITE или SSL_ERROR_WANT_READ, вам нужно снова повторить вызов SSL_write с ТОЧНЫМИ теми же параметрами после того, как условие выполнено (чтение/запись доступно в сокете).

Вызов его с разными параметрами приведет к ошибке ошибки повторной записи 1409F07F.

Например, когда SSL_write (ssl, ptr, size) с ptr = 0xABCDEFGH, размер = 4096 с ошибкой SSL_ERROR_WANT_READ или SSL_ERROR_WANT_WRITE, при повторном вызове SSL_write параметры ptr и размер должны быть одинаковыми. Это не эквивалентно, если ptr - другой указатель, указывающий на копию того же содержимого, что и в исходном вызове.

Однако это поведение SSL_write по умолчанию можно изменить, установив SSL_MODE_ENABLE_PARTIAL_WRITE и/или SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER.


Спасибо за @ShriramV за поясняющие комментарии, интегрированные в ответ