【发布时间】:2016-07-15 07:47:03
【问题描述】:
在现有的 DTLS 连接上,即 DTLS 握手已经在端口 5000 上成功完成,如果服务器收到传入的 DTLS 连接,即 DTLS 客户端 Hello 数据包,则 SSL_read 正在生成 SSL_ERROR_SYSCALL。
谁能告诉我原因。
场景是客户端在服务器的 5000 端口上与服务器建立了 DTLS 连接。客户端更改的 IP 地址可能是由于从 Wi-Fi 过渡到 3G 或反之亦然。因此,现在客户端将再次尝试在服务器的同一端口 5000 上与服务器建立 DTLS 连接。
请大家告诉我
第一季度。为什么 SSL_read 会生成错误 SSL_ERROR_SYSCALL 以及如何继续?
第二季度。我们是否可以在同一端口上的现有 DTLS 连接上处理另一个传入的 DTLS 连接,而无需清理已经存在的 DTLS 连接?
提前感谢您的帮助, 维内特·斯利瓦斯塔瓦
【问题讨论】:
-
你的问题在雷达下飞行。始终指明您的编程环境。我想这是关于你拥有的代码,对吧?如果是这样,代码在哪里?如果这只是关于 OpenSSL 本身,您可以尝试使用 serverfault 或超级用户。
-
编程环境-Unix。
-
已找到问题的解决方案。确定的问题有两个: 1. 在具有另一个 DLTS 连接的端口上获得传入 DTLS 连接时,需要生成另一个 SSL 句柄并将其视为单独的 DTLS 连接。 2. SSL_Read 调用中提供的长度必须正确。在提供适当的参数并生成新的 SSL 句柄后,问题就解决了。无论如何感谢 cmets。
标签: c openssl cryptography dtls