boost :: asio: происходит сбой подключения на Mac после переключения на boost 1.70 - PullRequest
0 голосов
/ 26 октября 2019

Я создаю веб-сокеты в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...