Я создаю веб-сокеты в boost asio для загрузки файла в URL-адрес потока AWS. Я использую синхронные boost :: asio ssl сокеты в моем приложении. Код прекрасно работал как на Mac, так и на Windows. После переключения на версию Boost 1.70, тот же код не может установить соединение и дает сбой во время вызова. Я мог видеть, что журнал изменений boost 1.70 показывает изменения, связанные с ssl. Однако я не уверен, что является причиной точного сбоя в следующем коде.
Вот код, который я использовал.
bool MyWebSocketSSL::connect(std::string& url)
{
boost::asio::io_context io_context;
boost::shared_ptr< ssl::context > _ctx;
boost::asio::ssl::stream<tcp::socket> *mSecureSocket;
...
...
try
{
tcp::resolver resolver{ ios };
auto const epi = resolver.resolve({ theHostName, "https" });
_ctx.reset(new ssl::context(boost::asio::ssl::context::sslv23));
mSecureSocket = new ssl::stream<tcp::socket>(io_context, *_ctx);
try {
boost::asio::connect(mSecureSocket->next_layer(), epi); // Crashes in Mac ???
mSecureSocket->set_verify_mode(boost::asio::ssl::verify_none);
mSecureSocket->set_verify_callback(boost::bind(&CCWebsocketSSL::verify_certificate, this, _1, _2));
// perform the SSL handshake
mSecureSocket->handshake(ssl::stream<boost::asio::tcp::socket>::client);
}
catch (std::runtime_error& e)
{
...
}
catch(...)
{
...
}connectme
...
}```
**Crash log generated on Mac is below**
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.adobe.dvacore.framework 0x0000000107d6b7dc boost::system::error_category::equivalent(boost::system::error_code const&, int) const + 4
1 com.xxx.Illustrator23.Plugins.connectme 0x000000011c82be48 boost::asio::ssl::detail::engine::map_error_code(boost::system::error_code&) const + 72 (error_code.hpp:678)
2 com.xxx.Illustrator23.Plugins.connectme 0x000000011c82bded unsigned long boost::asio::ssl::detail::io<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>, boost::asio::ssl::detail::handshake_op>(boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor>&, boost::asio::ssl::detail::stream_core&, boost::asio::ssl::detail::handshake_op const&, boost::system::error_code&) + 877 (io.hpp:93)
3 com.xxx.Illustrator23.Plugins.connectme 0x000000011c81fe29 boost::asio::ssl::stream<boost::asio::basic_stream_socket<boost::asio::ip::tcp, boost::asio::executor> >::handshake(boost::asio::ssl::stream_base::handshake_type) + 57 (throw_error.hpp:41)
4 com.connectme.Illustrator23.Plugins.connectme 0x000000011c81cb01 Esko::xxx::CCWebsocketSSL::Connect(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 993 (CCWebsocketSSL.cpp:77)