В OPENSSL, после SSL_Connect () я получаю SSL_ERROR_WANT_READ - PullRequest
0 голосов
/ 15 июля 2011

Я использую SSL_Connect(), а код возврата - «-1», с SSL_get_error() я вижу, что ошибка SSL_ERROR_WANT_READ.

Согласно предложению на одном форуме, где предлагалось продолжать звонить SSL_connect() до тех пор, пока не возникнет эта ошибка. С этой модификацией для первого звонка я получаю ошибку WANT_READ, а для второго звонка я получаю SSL_ERROR_SSL. После этого для всех последующих вызовов это только SSL_ERROR_SSL, и, согласно описанию этой ошибки, в SSL library.

выглядит что-то не так.

Может ли кто-то, кто разрешил SSL_connect, успешно оказать некоторую помощь.

Мой код представляет собой простую последовательность вызовов:
1. SSL_library_init ()
2. Создание методов (v23) и контекста с использованием этого мет
3. контекст не был изменен и он прост как создан.
4. Объект SSL создается с использованием этого простого ctx, и ssl_connect вызывается на этом ssl после вызова SSL_set_fd ()

Пожалуйста, дайте мне знать, если я что-то не так делаю в этой последовательности или я что-то упускаю?

Требуется ли загружать различные вещи в ctx, такие как сертификаты, и проверять их местоположение перед использованием, если да, каковы минимальные необходимые вещи.

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 15 июля 2011

Если требуется чтение, вы должны выполнить чтение или заблокировать функцию select (), пока OP_READ не сработает, если неблокирует, а затем снова вызовите SSL_Connect (). Если он хочет записи, вы должны сделать запись или заблокировать функцию select (), пока OP_WRITE не сработает, если неблокирует, а затем снова вызвать SSL_Connect ().

См. здесь .

...