GRPC C++ TLS 客户端 grpc::SslCredentials() 方法不返回

GRPC C++ TLS Client grpc::SslCredentials() method not returning

本文关键字:方法 返回 SslCredentials TLS 客户端 grpc GRPC C++      更新时间:2023-10-16

你使用的是什么版本的gRPC,你用的是什么语言? 1.29

什么操作系统(Linux,Windows,...(和版本? Red Hat Enterprise Linux Server Release 7.6 (Maipo(

您使用什么运行时/编译器(例如 python 版本或 gcc 版本( GCC (GCC( 4.8.5 20150623 (Red Hat 4.8.5-36( 版权所有 (C( 2015 自由软件基金会。 这是免费软件;有关复制条件,请参阅源。 没有 保证;甚至不是为了适销性或适合特定目的。

你做了什么? 创建客户机 SSL 凭据选项 如果我在简单的应用程序中使用相同的代码,它可以完美运行。 当集成到共享库中并在多线程应用程序中使用该库时。未创建的通道。 什么时候进行调试,我发现 grpc::SslCredentials(( 方法没有返回。

你期待看到什么? 创建通道并建立连接。 已启用的日志 导出GRPC_TRACE=全部 导出GRPC_VERBOSITY=调试 控制台中未生成日志。

你看到了什么? grpc::SslCredentials(( 方法未返回且未创建通道。 我尝试了共享库和静态库。

Used the following code

grpc::SslCredentialsOptions sslops;
{
std::string client    =   "";
std::string key     =   "";
std::string root    =   "";
std::string clientcert    =   "/cert/client.crt";
std::string keycert    =   "/cert/client.key";
std::string rootcert    =   "/cert/ca.crt";
SCMSSLCPPContext::read( clientcert, client);
SCMSSLCPPContext::read( keycert, key);
SCMSSLCPPContext::read( rootcert, root);
sslops = { root, key, cert };
//std::shared_ptr<grpc::ChannelCredentials> creds = grpc::SslCredentials(sslops);
auto channel_creds = grpc::SslCredentials(sslops);
auto channel = grpc::CreateChannel("localhost:14021", channel_creds );
}