2011-07-15 26 views
0

我使用SSL_Connect()並返回代碼是「-1」,與SSL_get_error()我可以看到該錯誤是SSL_ERROR_WANT_READ在OPENSSL中,SSL_Connect()後SSL_ERROR_WANT_READ

根據一個論壇上的建議,它建議在此錯誤消失前繼續呼叫SSL_connect()。對於第一次調用這個修改,我得到錯誤WANT_READ和第二次調用我得到SSL_ERROR_SSL。之後,對於所有後續調用,它僅爲SSL_ERROR_SSL,根據此錯誤的描述,它在SSL library中看起來出錯了。

有人能解決SSL_connect成功提供一些幫助。

我的代碼調用的一個普通的序列:)
1. SSL_library_init(
2.創建使用此甲基
3.上下文還沒有被修改的方法(V23)和上下文並將其平原創建。
4. SSL對象是使用這種平淡CTX調用SSL_set_fd之後創建和所以SSL_connect被稱爲這個SSL()

請讓我知道,如果我做一些事情錯在這個序列或者如果我失去了一些東西?

是否需要在使用證書之前將各種東西加載到ctx,並在使用之前驗證位置,如果是,那麼要求的最低要求是什麼。

在此先感謝您的幫助。

回答

1

如果需要讀取,您必須執行讀取操作或在select()中阻塞,直到OP_READ在非阻塞時觸發,然後再次調用SSL_Connect()。 如果需要寫入,則必須執行寫操作或在select()中阻塞,直到OP_WRITE在非阻塞時觸發,然後再次調用SSL_Connect()。

參見here

+0

並且你必須再次調用非常相同的參數(即相同的緩衝區)而不是它們的副本。在SSL_Connect的情況下,SSL * ssl應該是相同的。當然,我的評論在SSL_Connect()中比在SSL_read()中要少。 –

相關問題