SSL_WRITE在断网时的表现

SSL_WRITE断网造成的oom问题

前言:之前的帖子有说ssl_write的封装和调用,可以看看这里ssl_write的调用

之后的开发中有一条突然遇到了一个问题:断网的时候造成oom,花了比较多的时间,终于找到了原因,ssl_write!!!具体的原因是这样的:

之前也有说过,ssl_write代替了我们的send,但是在openssl有一个比较奇葩的问题就是在调用ssl_write的时候,有可能返回的是一个SSL_ERROR_WANT_READ或者SSL_ERROR_WANT_WRITE(这个在之前的帖子也用过,通过调用ssl_get_error来获取这个值),那么为什么会有这个呢?原因就是在http底层有一个重协商协议,这个就代表如果在数据交互的时候突然ssl链路层需要重新交互,这个交互是双方的,那么就代表,可能recv的时候阻塞或者send的时候阻塞,在recv的时候,我们只能乖乖等待其可读了,那么同理,send的时候也要等待可写,直到其成功。那么我这边的处理方法是,在断网的时候,等待ssl_get_error返回SSL_ERROR_WANT_WRITE,那么这个时候我就认为网络断开了(因为我发送数据是不断发送的,可以结合之前的帖子来看),然后我就会不让别的接口来调用ssl_write并解锁,之后会断开并释放ssl连接以及相关资源,断开tcp连接,重新连接。

大家有什么不清除的地方可以给我留言,因为这个是针对我目前的项目而言的,希望跟大家多交流~~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值