[問題] openssl的ssl_read問題
平台:Linux
套件:openssl 1.0.1t
編譯器: g++
程式碼:https://github.com/hn12404988/hast_web/blob/master/hast_web/socket_server.cpp
(程式碼很多,我覺得聽以下描述比較好...,出問題的在在316行)
問題:
我有兩條thread, 一條負責接收來自wss(websocket secure)的連線(A thread)
一條只負責聽訊息(B thread)
A thread表現正常,能接收,接收握手訊息,解碼編完,再回傳成功訊息回去,都OK
這時就會把那個socket的file descriptor存起來
B thread在創造玩SSL物件後,只要剛剛存起來的socket訊息來了,就會以下動作:
SSL_set_fd(ssl,fd)
SSL_read(ssl,buf,buf_len)
問題就出在SSL_read的時候,會出現未初始化的錯誤以下:
```
SSL routines:SSL_read:uninitialized:ssl_lib.c:963
```
但我試著檢查SSL物件,和他底下的BIO都存在,socket也活著
而A和B的兩個SSL都是同個CTX樣板產生出來的,只差在A的SSL有多執行一個SSL_accept而已
難道是file descriptor有綁定SSL物件嗎?我上網查了資料,但這方面資料很少
不知道有沒有人熟悉openssl套件?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.16.181
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1489899316.A.FA4.html
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):