openSSL中SSL_MODE_AUTO_RETRY使用引发的问题

2023-05-16

1. SSL_MODE_AUTO_RETRY的作用

关于这个flag的作用,openSSL官方的解释如下所示:

SSL_MODE_AUTO_RETRY
Never bother the application with retries if the transport is blocking. If a renegotiation take place during normal operation, a **SSL_read(3)**or SSL_write(3) would return with -1 and indicate the need to retry with SSL_ERROR_WANT_READ. In a non-blocking environment applications must be prepared to handle incomplete read/write operations. In a blocking environment, applications are not always prepared to deal with read/write operations returning without success report. The flag SSL_MODE_AUTO_RETRY will cause read/write operations to only return after the handshake and successful completion.

这个flag实际的作用SSL_read 和SSL_write两个函数会在握手并且完成读写操作操作之后返回。

因此这个flag被设置到SSL的CTX之后,如果程序中使用了多路复用机制(例如select poll等)来触发读操作。那么如果对端开始和本地进行重协商时,本地fd会由于有数据报文到达,从而相关的链接被认为有数据需要读取,程序调用SSL_read进行fd的读写,然后在SSL_read内部完成TLS的重协商(所谓重协商可以理解为一次重新握手动作)。但是重协商完成之后,如果对端没有发送数据,那么将导致SSL_read无法返回,一直blocking在SSL_read函数中。

综上,如果使用了多路复用机制,那么最好就不要再使用SSL_MODE_AUTO_RETRY参数,否则可能导致对端进行TLS重协商时出现SSL_read无法返回的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openSSL中SSL_MODE_AUTO_RETRY使用引发的问题 的相关文章

随机推荐

  • python画生肖兔

    2022已经过去 xff0c 2023正在继续 xff0c 希望我们都能在平凡的日子里 xff0c 熠熠生辉 本文介绍运用Python中的turtle库控制函数画生肖兔 xff0c 并设置了2023年幸运词 xff0c 快截屏看看你的幸运词
  • 判断变量是否存在

    来获取一个变量是否存在 xff0c 用 if typeof a 61 34 undefined 34 alert 34 ok 34 xff0c xff0c 而不要去使用 if a 因为如果 a 不存在 xff08 未声明 xff09 则会出
  • Nextcloud 内部服务器错误解决

    在部署nextcloud过程中最后登录页面时出现内部服务器错误 xff0c 心态当时就炸了 在网上找了各种方案 xff0c 但是大部分博主都告诉我是 var lib php session 属组的权限问题 xff0c 或者web目录的权限不
  • golang中的(data race )典型数据竞争问题举例

    示例一 func main var wg sync WaitGroup wg Add 5 for i 61 0 i lt 5 i 43 43 go func fmt Println i Not the 39 i 39 you are loo
  • Jupyter Notebook怎么全选输出的内容?

    Ctrl 43 A 单击 双击 三连击 三连击 xff01 xff01 xff01
  • RetinaNet详细解读

    网络名称RetinaNet发表时间2018年1月作者Tsung Yi Lin Priya Goyal Ross Girshick Kaiming He and Piotr Dollar机构Facebook AI Research FAIR
  • 微信公众号服务器token验证失败?

    很可能是你用了官方的python范例 xff0c 官方的范例是python2的 xff0c 而我用的是python3的 将 map sha1 update list 修改为sha1 61 hashlib sha1 34 34 join li
  • 三分钟学会lightGBM安装及入门指南(一)

    果然标题大法好啊 xff0c 还是成功的让你进来了吧 xff0c xff0c 但是以下都是干货 我的机器环境python3 6 xff0c win7操作系统 xff0c 当然win10也是同样适用的 xff0c 有不懂的可以留言 xff0c
  • 微信小程序文字水平垂直居中对齐问题(完美解决方案)

    我们知道常用的居中对齐方式有很多种例如 xff1a text align center align items center justify content center margin auto 子容器在父容器中居中 但是在view中的文字
  • mac下python matplotlib中文乱码解决方案(亲测可用)!!

    在网上找了一大堆方法 xff0c 花了很久 xff0c 发现不是要安装各种字体就是要改配置 xff0c 而且字体真的不好找也不好安装 就例如下面这两种办法 xff0c mac下根本不管用 xff0c 别人管不管用我不知道 xff0c 反正我
  • python使用threading.Timer实现线程循环任务定时器(一)

    在进行爬虫系统开发的过程中遇到需要间隔一段时间就重复执行的任务的需求 xff0c 就想实现一个线程服务在后台监控数据的抓取状态 xff0c 要想实现定时循环任务的脚本可以使用linux下的crontab命令来执行 xff0c 但是在一个常驻
  • cross_val_score的 scoring参数值解析

    一般我们在模型训练过程中 xff0c 会采用K折交叉验证的方法来验证模型的表现 xff0c 从而进行调参 xff0c 一般我们会用到 sklearn model selection 的 cross val score 方法来计算模型的得分
  • windows 10下 itunes 备份默认存储路径问题

    最近在研究iphone手机备份的问题 xff0c 在使用itunes给手机备份的时候 xff0c 发现C盘空间不够用了 xff0c 于是想把itunes的默认存储路径修改一下 xff0c 在网上查找资料了解了相关操作教程后 xff0c 发现
  • MAC查看与修改系统默认的shell

    查看系统当前默认使用的shell有如下几个方法 一 查看所有的shell cat etc shells 输出 List of acceptable shells for chpass 1 Ftpd will not allow users
  • windows下redis的配置文件(redis.windows.conf)

    redis的配置 Redis默认不是以守护进程的方式运行 xff0c 可以通过该配置项修改 xff0c 使用yes启用守护进程 daemonize yes 当Redis以守护进程方式运行时 xff0c Redis默认会把pid写入redis
  • UITabBarController

    1 UITabBarController的常用属性和方法 一般来说 xff0c 目前市面上的App很多都是由一个UITabBarController管理着4 xff5e 5个UINavigationController xff0c 然后每个
  • LJSpeech-1.1.tar.bz2 下载分享

    数据集 xff1a http data keithito com data speech LJSpeech 1 1 tar bz2 xff08 用迅雷下载很快 xff09 百度网盘地址 xff1a 链接 xff1a https pan ba
  • cookie存放位置(Win10)

    IE浏览器 xff1a APPDATA Microsoft Windows Cookies 目录中的xxx txt文件 xff08 IE浏览器分开存放的 xff09 火狐浏览器 xff1a APPDATA Mozilla Firefox P
  • C语言 将一个整数的二进制序列分别输出

    include lt stdio h gt int main int i j num char arr1 16 char arr2 16 printf 34 输入一个整数 xff1a 34 scanf 34 d 34 amp num for
  • openSSL中SSL_MODE_AUTO_RETRY使用引发的问题

    1 SSL MODE AUTO RETRY的作用 关于这个flag的作用 xff0c openSSL官方的解释如下所示 xff1a SSL MODE AUTO RETRY Never bother the application with