程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何处理 Thrift 中未初始化的会话 ID 上下文大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何处理 Thrift 中未初始化的会话 ID 上下文?

开发过程中遇到如何处理 Thrift 中未初始化的会话 ID 上下文的问题如何解决?下面主要结合日常开发的经验,给出你关于如何处理 Thrift 中未初始化的会话 ID 上下文的解决方法建议,希望对你解决如何处理 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,请注明来意。