大佬教程收集整理的这篇文章主要介绍了如何处理 Thrift 中未初始化的会话 ID 上下文,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对不起,打扰你们了,
我有一个用 C++ 编写的 Thrift 服务器程序。每当客户端连接到我时,握手都会成功,发送的第一个 Thrift 命令也是如此,但发送的第二个命令失败,并显示错误“会话 ID 上下文未初始化”。
客户端的下一个命令重新建立连接并成功,但第四个命令将再次失败,并显示“session ID context uninitialized”。
确切的错误是
TConnectedClIEnt dIEd: SSL_accept: session ID context uninitialized (SSL_error_code = 1)
TConnectedClIEnt input close Failed: session ID context uninitialized (SSL_error_code = 1)
TConnectedClIEnt output close Failed: session ID context uninitialized (SSL_error_code = 1)
每个“偶数”命令
我的问题似乎与 THIS 类似,但我似乎无法弄清楚如何更改会话的上下文以设置 SSL_OP_NO_TICKET 标志。
我尝试添加一个 ServerEventHandler,但我认为我无法更改那里的 serverContext。
有人可以帮我吗?
下面是我声明和启动服务器的 main() 部分。如果需要更多信息,请询问。 (对不起,如果我打错了任何代码,我不得不在这里手动重新输入)
::apache::thrift::stdcxx::shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactoryT<TBufferBase>());
::apache::thrift::stdcxx::shared_ptr<My_svrHandler> handler(new My_svrHandler());
::apache::thrift::stdcxx::shared_ptr<TProcessor> processor(new My_svrProcessor(handler));
::apache::thrft::stdcxx::shared_ptr<TSSLSocketFactory> sslSocketFactory(new TSSLSocketFactory(SSL::TLSv1_2));
sslSocketFactory->loadCertificate(certLOCATIOn);
sslSocketFactory->loadPrivateKey(keyLOCATIOn);
sslSocketFactory->loadTrustedCertificates(CALOCATIOn);
sslSocketFactory->authenticate(true);
::apache::thrift::stdcxx::shared_ptr<TServerSocket> serverSocket(new TSSLServerSocket(9090,sslSocketFactory));
::apache::thrift::stdcxx::shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
::apache::thrift::stdcxx::shared_ptr<apache::thrift::server::Tserver> server;
::apache::thrift::stdcxx::shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(10);
::apache::thrift::stdcxx::shared_ptr<PlatformThreadFactory> threadFactory = ::apache::thrift::stdcxx::shared_ptr<PlatformThreadFactory>(new PlatformThreadFactory());
threadManager->threadFactory(threadFactory);
threadManager->start();
server.reset(new TThreadedPoolServer(processor,serverSocket,transportFactory,protocolFactory,threadmanager));
if(server.get() != NulL)
{
apache::thrift::concurrency::PlatformThreadFactory factory;
::apache::thrift::stdcxx::shared_ptr<apache::thrift::concurrency::runnable> serverThreadRunner(server);
::apache::thrift::stdcxx::shared_ptr<apache::thrift::concurrency::Thread> thread = factory.newThread(serverThreadRunner);
signal(SIGPIPE,SIG_IGN);
thread->start();
while(1){}
server->stop();
thread->join();
server.reset();
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的如何处理 Thrift 中未初始化的会话 ID 上下文全部内容,希望文章能够帮你解决如何处理 Thrift 中未初始化的会话 ID 上下文所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。