作者hn12404988 (Willy)
看板C_and_CPP
标题[问题] openssl的ssl_read问题
时间Sun Mar 19 12:55:13 2017
平台: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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1489899316.A.FA4.html