Fix async_detect_ssl with use_awaitable

fixes #1918
This commit is contained in:
Richard Hodges
2020-04-27 16:19:28 +02:00
parent 9eba942d1f
commit 24cc4a7aee
3 changed files with 22 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
Version XXX:
* Fix async_detect_ssl with use_awaitable
* Add clang coroutines-ts to circleci config
--------------------------------------------------------------------------------

View File

@@ -374,13 +374,13 @@ struct run_detect_ssl_op
void operator()(
DetectHandler&& h,
AsyncReadStream* s, // references are passed as pointers
DynamicBuffer& b)
DynamicBuffer* b)
{
detect_ssl_op<
typename std::decay<DetectHandler>::type,
AsyncReadStream,
DynamicBuffer>(
std::forward<DetectHandler>(h), *s, b);
std::forward<DetectHandler>(h), *s, *b);
}
};
@@ -439,7 +439,7 @@ async_detect_ssl(
detail::run_detect_ssl_op{},
token,
&stream, // pass the reference by pointer
buffer);
&buffer);
}
//]

View File

@@ -16,6 +16,11 @@
#include <boost/beast/core/flat_buffer.hpp>
#include <boost/beast/core/string.hpp>
#include <boost/core/exchange.hpp>
#if BOOST_ASIO_HAS_CO_AWAIT
#include <boost/asio/awaitable.hpp>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/use_awaitable.hpp>
#endif
namespace boost {
namespace beast {
@@ -166,12 +171,25 @@ public:
}
}
#if BOOST_ASIO_HAS_CO_AWAIT
void testAwaitableCompiles(test::stream& stream, flat_buffer& b)
{
static_assert(
std::is_same_v<
net::awaitable<bool>, decltype(
async_detect_ssl(stream, b, net::use_awaitable))>);
}
#endif
void
run() override
{
testDetect();
testRead();
testAsyncRead();
#if BOOST_ASIO_HAS_CO_AWAIT
boost::ignore_unused(&detect_ssl_test::testAwaitableCompiles);
#endif
}
};