[問題] openssl的ssl_read問題

看板C_and_CPP作者 (Willy)時間7年前 (2017/03/19 12:55), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
平台: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
文章代碼(AID): #1OpWyq-a (C_and_CPP)
文章代碼(AID): #1OpWyq-a (C_and_CPP)