linux OpenSSL如何防止::send()在调用SSL_write()时抛出异常

jv4diomz  于 2023-01-12  发布在  Linux
关注(0)|答案(1)|浏览(207)

我使用OpenSSL并调用SSL_write(),它最终调用::send()。然而,当通信量太大时,另一端偶尔会断开连接。因此,在我的下一次写入时,::send()抛出异常。
我希望避免这种情况,并返回一个错误代码,以便重新启动应用程序。
如果我自己调用::send(),我可以传递MSG_NOSIGNAL标志,这会导致::send()返回一个错误代码,但是,我没有看到SSL_write()有这样的参数。
有什么我可以做的吗?

pcww981p

pcww981p1#

...防止::send()抛出异常
您可能指的是触发信号SIGPIPE,而不是“抛出异常”。
如果希望完全控制SSL堆栈的输入和输出,请使用自己的BIO
如果你想在所有套接字上全局返回EPIPE而不是触发SIGPIPE,只需将SIGPIPE的信号处理程序设置为SIG_IGN。如果你想控制单个套接字的SIGPIPE,你可以在一些系统上使用setsockopt来完成。

相关问题