通过http代理提升:: asio握手?

时间:2010-06-20 15:20:09

标签: c++ boost ssl tcp boost-asio

提升和asio相当新,需要帮助:

  1. 连接到代理 asio::ip::tcp::socket socket_;

  2. 将CONNECT主机:ssl服务器发送到代理 receive response 200

  3. asio::ssl::context ctx(io_service, asio::ssl::context::sslv23); sslsocket_(socket_,context)
  4. 尝试握手 sslsocket_.async_handshake(asio::ssl::stream_base::client, boost::bind(&client::handle_handshake, this, asio::placeholders::error));

  5. 并收到asio.ssl错误 Wireshark: host sends FIN after 1st message of handshake

  6. 与ssl服务器的直接异步连接工作正常,通过Proxifier

2 个答案:

答案 0 :(得分:1)

您可能需要在步骤5中检查OpenSSL错误堆栈,由于Boost.Asio没有将其映射到它使用的正常system_error代码,因此这并非常简单。 Guy Sirton最近在asio邮件列表上有一个post,描述了如何修改源代码以实现此目的。

答案 1 :(得分:1)

忘了提到在使用NAT网络的VMplayer中运行应用程序; bridged通过初始握手解决了问题,但有时在重新连接后看到相同的消息; 使用Sam的链接中的方法在握手期间得到了“意外记录” - 谷歌说这个关于重新谈判的错误但事实并非如此;挖掘OpenSSL的来源:新连接使用相同的BIO来读取和接收来自先前连接的应用程序数据 不知道如何用asio重置SSL结构,所以用new | delete

进行动态套接字分配