Позвоните SSL :: Stream :: Async_shutdown после операции чтения отмененыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Позвоните SSL :: Stream :: Async_shutdown после операции чтения отменены

Сообщение Anonymous »

У меня есть одна активная асинхронная операция, это http :: async_read . В тот момент, когда я хочу закрыть соединение SSL, я отменяю эту асинхронную операцию в сокете, вызывая ip :: tcp :: oucket :: cancel .
Затем я заканчиваю соединение SSL, как это

Код: Выделить всё

socket_wrapper.cancel(); // cancel http::async_read
boost::asio::post(socket_wrapper.get_stream().get_executor(), [this, self]
{
socket_wrapper.get_stream().async_shutdown([this, self](const boost::system::error_code& ec)
{
socket_wrapper.close();
});
});
Я называю Boost :: asio :: post , чтобы убедиться, что обработчик завершения для отмененного http :: async_read был вызван. После этого я называю async_shutdown . Операция ASYNC_SHUTDOWN успешно завершается в большинстве случаев. и отладчик указывает на следующий код из Boost :: Asio Источники:

Код: Выделить всё

int engine::do_shutdown(void*, std::size_t)
{
int result = ::SSL_shutdown(ssl_);
if (result == 0)
result = ::SSL_shutdown(ssl_);
return result;
}
Что может быть причиной?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -cancelled
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»