对于SSL
连接,从接听电话收到的FD
可以做些什么?可以重复使用吗?
我想知道的确切想知道的是:
接受连接后,我会收到FD
。
我使用SSL*
创建了一个SSL句柄(SSL_new
)。
使用FD
将SSL_set_fd
添加到此句柄。
我使用SSL_accept
进行握手。
现在,如果我在SSL_shutdown
上致电SSL*
,FD
会被关闭吗?那么SSL_free呢?
如果上述问题的答案为否,那么我可以将FD
与另一个SSL*
一起使用吗?
要解释我想要的内容,如果我们使用句柄FD
从连接SSL*
读取一些数据,然后我们释放或关闭SSL*
,我们是否可以从FD
读取剩余数据{1}}使用新的SSL*
?
答案 0 :(得分:5)
SSL_shutdown仅通过套接字发送关闭通知。如果你想在之后将套接字重用为普通套接字,你必须确保另一边也做了SSL_shutdown。此信息为您提供SSL_shutdown的返回码:如果为1,则SSL连接关闭,如果为0,则应再次调用SSL_shutdown,等待来自对等方的关闭通知。有关详细信息,请参阅SSL_shutdown文档。
完成此操作后,您可以继续将套接字用作普通套接字。这是通过FTP(ftps)在SSL中完成的,例如使用“AUTH TLS”,连接将升级为SSL,使用“CCC”,它将再次降级为纯文本。
SSL_free只释放与SSL对象关联的内存,它不会更改套接字上的任何内容,也不会发送/接收任何数据。