如何破译提升asio ssl错误代码?

Gea*_*phy 8 c++ ssl boost boost-asio

我在增强的asio ssl实现中偶尔会出现通信故障,boost返回的超级有用的错误消息是'asio.ssl:336458004'

我怀疑数字图是由SSL标志组成的某种聚合结构,我说因为linux错误代码,boost asio错误代码和ssl错误代码没有任何对'336458004'的引用,所以大概是必须的动态构建.

任何人都可以提供一些有关如何解读此错误代码的见解吗?谢谢.

fan*_*ory 14

他们使用来自crypto/err/err.h的ERR_PACK

这将允许将错误转换为字符串

#include <crypto/err/err.h>

string err = error.message()
if (error.category() == boost::asio::error::get_ssl_category()) {
    err = string(" (")
            +boost::lexical_cast<string>(ERR_GET_LIB(error.value()))+","
            +boost::lexical_cast<string>(ERR_GET_FUNC(error.value()))+","
            +boost::lexical_cast<string>(ERR_GET_REASON(error.value()))+") "
    ;
    //ERR_PACK /* crypto/err/err.h */
    char buf[128];
    ::ERR_error_string_n(error.value(), buf, sizeof(buf));
    err += buf;
}
Run Code Online (Sandbox Code Playgroud)

可能不包含在boost中,因此asio在使用纯套接字时不需要链接到ssl