mirror of
https://github.com/boostorg/beast.git
synced 2025-07-29 12:27:44 +02:00
net::ssl::stream is canonical in examples
We no longer need to use beast::ssl_stream to improve write performance, as
Asio now linearizes scatter/gather I/O in ssl::stream:
17637a48cc
This commit is contained in:
committed by
Mohammad Nejati
parent
bd804b6520
commit
03b792faac
@ -17,26 +17,26 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/as_tuple.hpp>
|
#include <boost/asio/as_tuple.hpp>
|
||||||
#include <boost/asio/awaitable.hpp>
|
#include <boost/asio/awaitable.hpp>
|
||||||
#include <boost/asio/bind_executor.hpp>
|
|
||||||
#include <boost/asio/bind_cancellation_slot.hpp>
|
#include <boost/asio/bind_cancellation_slot.hpp>
|
||||||
|
#include <boost/asio/bind_executor.hpp>
|
||||||
#include <boost/asio/co_spawn.hpp>
|
#include <boost/asio/co_spawn.hpp>
|
||||||
#include <boost/asio/deferred.hpp>
|
#include <boost/asio/deferred.hpp>
|
||||||
#include <boost/asio/detached.hpp>
|
#include <boost/asio/detached.hpp>
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
#include <boost/asio/experimental/parallel_group.hpp>
|
#include <boost/asio/experimental/parallel_group.hpp>
|
||||||
#include <boost/asio/signal_set.hpp>
|
#include <boost/asio/signal_set.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/make_unique.hpp>
|
#include <boost/make_unique.hpp>
|
||||||
#include <boost/asio/use_awaitable.hpp>
|
#include <boost/asio/use_awaitable.hpp>
|
||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -438,21 +438,18 @@ class ssl_websocket_session
|
|||||||
: public websocket_session<ssl_websocket_session>
|
: public websocket_session<ssl_websocket_session>
|
||||||
, public std::enable_shared_from_this<ssl_websocket_session>
|
, public std::enable_shared_from_this<ssl_websocket_session>
|
||||||
{
|
{
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws_;
|
||||||
beast::ssl_stream<beast::tcp_stream>> ws_;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Create the ssl_websocket_session
|
// Create the ssl_websocket_session
|
||||||
explicit
|
explicit
|
||||||
ssl_websocket_session(
|
ssl_websocket_session(ssl::stream<beast::tcp_stream>&& stream)
|
||||||
beast::ssl_stream<beast::tcp_stream>&& stream)
|
|
||||||
: ws_(std::move(stream))
|
: ws_(std::move(stream))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>>&
|
||||||
beast::ssl_stream<beast::tcp_stream>>&
|
|
||||||
ws()
|
ws()
|
||||||
{
|
{
|
||||||
return ws_;
|
return ws_;
|
||||||
@ -474,7 +471,7 @@ make_websocket_session(
|
|||||||
template<class Body, class Allocator>
|
template<class Body, class Allocator>
|
||||||
void
|
void
|
||||||
make_websocket_session(
|
make_websocket_session(
|
||||||
beast::ssl_stream<beast::tcp_stream> stream,
|
ssl::stream<beast::tcp_stream> stream,
|
||||||
http::request<Body, http::basic_fields<Allocator>> req)
|
http::request<Body, http::basic_fields<Allocator>> req)
|
||||||
{
|
{
|
||||||
std::make_shared<ssl_websocket_session>(
|
std::make_shared<ssl_websocket_session>(
|
||||||
@ -697,7 +694,7 @@ class ssl_http_session
|
|||||||
: public http_session<ssl_http_session>
|
: public http_session<ssl_http_session>
|
||||||
, public std::enable_shared_from_this<ssl_http_session>
|
, public std::enable_shared_from_this<ssl_http_session>
|
||||||
{
|
{
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Create the http_session
|
// Create the http_session
|
||||||
@ -731,14 +728,14 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
beast::ssl_stream<beast::tcp_stream>&
|
ssl::stream<beast::tcp_stream>&
|
||||||
stream()
|
stream()
|
||||||
{
|
{
|
||||||
return stream_;
|
return stream_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
beast::ssl_stream<beast::tcp_stream>
|
ssl::stream<beast::tcp_stream>
|
||||||
release_stream()
|
release_stream()
|
||||||
{
|
{
|
||||||
return std::move(stream_);
|
return std::move(stream_);
|
||||||
@ -869,7 +866,7 @@ net::awaitable<void, executor_type> do_eof(Stream & stream)
|
|||||||
|
|
||||||
template<typename Stream>
|
template<typename Stream>
|
||||||
BOOST_ASIO_NODISCARD net::awaitable<void, executor_type>
|
BOOST_ASIO_NODISCARD net::awaitable<void, executor_type>
|
||||||
do_eof(beast::ssl_stream<Stream> & stream)
|
do_eof(ssl::stream<Stream> & stream)
|
||||||
{
|
{
|
||||||
co_await stream.async_shutdown();
|
co_await stream.async_shutdown();
|
||||||
}
|
}
|
||||||
@ -1023,7 +1020,7 @@ detect_session(typename beast::tcp_stream::rebind_executor<executor_with_default
|
|||||||
if(result)
|
if(result)
|
||||||
{
|
{
|
||||||
using stream_type = typename beast::tcp_stream::rebind_executor<executor_with_default>::other;
|
using stream_type = typename beast::tcp_stream::rebind_executor<executor_with_default>::other;
|
||||||
beast::ssl_stream<stream_type> ssl_stream{std::move(stream), ctx};
|
ssl::stream<stream_type> ssl_stream{std::move(stream), ctx};
|
||||||
auto [ec, bytes_used] = co_await ssl_stream.async_handshake(net::ssl::stream_base::server, buffer.data());
|
auto [ec, bytes_used] = co_await ssl_stream.async_handshake(net::ssl::stream_base::server, buffer.data());
|
||||||
|
|
||||||
if(ec)
|
if(ec)
|
||||||
|
@ -17,18 +17,18 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/bind_executor.hpp>
|
#include <boost/asio/bind_executor.hpp>
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
#include <boost/asio/signal_set.hpp>
|
#include <boost/asio/signal_set.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/make_unique.hpp>
|
#include <boost/make_unique.hpp>
|
||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
@ -391,21 +391,18 @@ class ssl_websocket_session
|
|||||||
: public websocket_session<ssl_websocket_session>
|
: public websocket_session<ssl_websocket_session>
|
||||||
, public std::enable_shared_from_this<ssl_websocket_session>
|
, public std::enable_shared_from_this<ssl_websocket_session>
|
||||||
{
|
{
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws_;
|
||||||
beast::ssl_stream<beast::tcp_stream>> ws_;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Create the ssl_websocket_session
|
// Create the ssl_websocket_session
|
||||||
explicit
|
explicit
|
||||||
ssl_websocket_session(
|
ssl_websocket_session(ssl::stream<beast::tcp_stream>&& stream)
|
||||||
beast::ssl_stream<beast::tcp_stream>&& stream)
|
|
||||||
: ws_(std::move(stream))
|
: ws_(std::move(stream))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>>&
|
||||||
beast::ssl_stream<beast::tcp_stream>>&
|
|
||||||
ws()
|
ws()
|
||||||
{
|
{
|
||||||
return ws_;
|
return ws_;
|
||||||
@ -427,7 +424,7 @@ make_websocket_session(
|
|||||||
template<class Body, class Allocator>
|
template<class Body, class Allocator>
|
||||||
void
|
void
|
||||||
make_websocket_session(
|
make_websocket_session(
|
||||||
beast::ssl_stream<beast::tcp_stream> stream,
|
ssl::stream<beast::tcp_stream> stream,
|
||||||
http::request<Body, http::basic_fields<Allocator>> req)
|
http::request<Body, http::basic_fields<Allocator>> req)
|
||||||
{
|
{
|
||||||
std::make_shared<ssl_websocket_session>(
|
std::make_shared<ssl_websocket_session>(
|
||||||
@ -650,7 +647,7 @@ class ssl_http_session
|
|||||||
: public http_session<ssl_http_session>
|
: public http_session<ssl_http_session>
|
||||||
, public std::enable_shared_from_this<ssl_http_session>
|
, public std::enable_shared_from_this<ssl_http_session>
|
||||||
{
|
{
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Create the http_session
|
// Create the http_session
|
||||||
@ -684,14 +681,14 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
beast::ssl_stream<beast::tcp_stream>&
|
ssl::stream<beast::tcp_stream>&
|
||||||
stream()
|
stream()
|
||||||
{
|
{
|
||||||
return stream_;
|
return stream_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
beast::ssl_stream<beast::tcp_stream>
|
ssl::stream<beast::tcp_stream>
|
||||||
release_stream()
|
release_stream()
|
||||||
{
|
{
|
||||||
return std::move(stream_);
|
return std::move(stream_);
|
||||||
|
@ -17,15 +17,13 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/asio/system_executor.hpp>
|
#include <boost/asio/system_executor.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace beast = boost::beast; // from <boost/beast.hpp>
|
namespace beast = boost::beast; // from <boost/beast.hpp>
|
||||||
namespace http = beast::http; // from <boost/beast/http.hpp>
|
namespace http = beast::http; // from <boost/beast/http.hpp>
|
||||||
@ -46,7 +44,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
class session : public std::enable_shared_from_this<session>
|
class session : public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
tcp::resolver resolver_;
|
tcp::resolver resolver_;
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
beast::flat_buffer buffer_; // (Must persist between reads)
|
beast::flat_buffer buffer_; // (Must persist between reads)
|
||||||
http::request<http::empty_body> req_;
|
http::request<http::empty_body> req_;
|
||||||
http::response<http::string_body> res_;
|
http::response<http::string_body> res_;
|
||||||
|
@ -17,14 +17,12 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace beast = boost::beast; // from <boost/beast.hpp>
|
namespace beast = boost::beast; // from <boost/beast.hpp>
|
||||||
namespace http = beast::http; // from <boost/beast/http.hpp>
|
namespace http = beast::http; // from <boost/beast/http.hpp>
|
||||||
@ -45,7 +43,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
class session : public std::enable_shared_from_this<session>
|
class session : public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
tcp::resolver resolver_;
|
tcp::resolver resolver_;
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
beast::flat_buffer buffer_; // (Must persist between reads)
|
beast::flat_buffer buffer_; // (Must persist between reads)
|
||||||
http::request<http::empty_body> req_;
|
http::request<http::empty_body> req_;
|
||||||
http::response<http::string_body> res_;
|
http::response<http::string_body> res_;
|
||||||
|
@ -15,18 +15,17 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/as_tuple.hpp>
|
#include <boost/asio/as_tuple.hpp>
|
||||||
#include <boost/asio/awaitable.hpp>
|
#include <boost/asio/awaitable.hpp>
|
||||||
#include <boost/asio/co_spawn.hpp>
|
#include <boost/asio/co_spawn.hpp>
|
||||||
#include <boost/asio/detached.hpp>
|
#include <boost/asio/detached.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/use_awaitable.hpp>
|
#include <boost/asio/use_awaitable.hpp>
|
||||||
|
|
||||||
#if defined(BOOST_ASIO_HAS_CO_AWAIT)
|
#if defined(BOOST_ASIO_HAS_CO_AWAIT)
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "example/common/root_certificates.hpp"
|
#include "example/common/root_certificates.hpp"
|
||||||
@ -58,7 +57,7 @@ do_session(
|
|||||||
using tcp_stream = typename beast::tcp_stream::rebind_executor<executor_with_default>::other;
|
using tcp_stream = typename beast::tcp_stream::rebind_executor<executor_with_default>::other;
|
||||||
|
|
||||||
// We construct the ssl stream from the already rebound tcp_stream.
|
// We construct the ssl stream from the already rebound tcp_stream.
|
||||||
beast::ssl_stream<tcp_stream> stream{
|
ssl::stream<tcp_stream> stream{
|
||||||
net::use_awaitable.as_default_on(beast::tcp_stream(co_await net::this_coro::executor)),
|
net::use_awaitable.as_default_on(beast::tcp_stream(co_await net::this_coro::executor)),
|
||||||
ctx};
|
ctx};
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/spawn.hpp>
|
#include <boost/asio/spawn.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -55,7 +55,7 @@ do_session(
|
|||||||
|
|
||||||
// These objects perform our I/O
|
// These objects perform our I/O
|
||||||
tcp::resolver resolver(ioc);
|
tcp::resolver resolver(ioc);
|
||||||
beast::ssl_stream<beast::tcp_stream> stream(ioc, ctx);
|
ssl::stream<beast::tcp_stream> stream(ioc, ctx);
|
||||||
|
|
||||||
// Set SNI Hostname (many hosts need this to handshake successfully)
|
// Set SNI Hostname (many hosts need this to handshake successfully)
|
||||||
if(! SSL_set_tlsext_host_name(stream.native_handle(), host.c_str()))
|
if(! SSL_set_tlsext_host_name(stream.native_handle(), host.c_str()))
|
||||||
|
@ -17,15 +17,12 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/connect.hpp>
|
#include <boost/asio/connect.hpp>
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
#include <boost/asio/ip/tcp.hpp>
|
||||||
#include <boost/asio/ssl/error.hpp>
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/ssl/stream.hpp>
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace beast = boost::beast; // from <boost/beast.hpp>
|
namespace beast = boost::beast; // from <boost/beast.hpp>
|
||||||
namespace http = beast::http; // from <boost/beast/http.hpp>
|
namespace http = beast::http; // from <boost/beast/http.hpp>
|
||||||
@ -67,7 +64,7 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
// These objects perform our I/O
|
// These objects perform our I/O
|
||||||
tcp::resolver resolver(ioc);
|
tcp::resolver resolver(ioc);
|
||||||
beast::ssl_stream<beast::tcp_stream> stream(ioc, ctx);
|
ssl::stream<beast::tcp_stream> stream(ioc, ctx);
|
||||||
|
|
||||||
// Set SNI Hostname (many hosts need this to handshake successfully)
|
// Set SNI Hostname (many hosts need this to handshake successfully)
|
||||||
if(! SSL_set_tlsext_host_name(stream.native_handle(), host))
|
if(! SSL_set_tlsext_host_name(stream.native_handle(), host))
|
||||||
|
@ -17,14 +17,13 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -236,7 +235,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
// Handles an HTTP server connection
|
// Handles an HTTP server connection
|
||||||
class session : public std::enable_shared_from_this<session>
|
class session : public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
beast::flat_buffer buffer_;
|
beast::flat_buffer buffer_;
|
||||||
std::shared_ptr<std::string const> doc_root_;
|
std::shared_ptr<std::string const> doc_root_;
|
||||||
http::request<http::string_body> req_;
|
http::request<http::string_body> req_;
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/detached.hpp>
|
#include <boost/asio/detached.hpp>
|
||||||
#include <boost/asio/spawn.hpp>
|
#include <boost/asio/spawn.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
@ -235,7 +235,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
// Handles an HTTP server connection
|
// Handles an HTTP server connection
|
||||||
void
|
void
|
||||||
do_session(
|
do_session(
|
||||||
beast::ssl_stream<beast::tcp_stream>& stream,
|
ssl::stream<beast::tcp_stream>& stream,
|
||||||
std::shared_ptr<std::string const> const& doc_root,
|
std::shared_ptr<std::string const> const& doc_root,
|
||||||
net::yield_context yield)
|
net::yield_context yield)
|
||||||
{
|
{
|
||||||
@ -342,7 +342,7 @@ do_listen(
|
|||||||
acceptor.get_executor(),
|
acceptor.get_executor(),
|
||||||
std::bind(
|
std::bind(
|
||||||
&do_session,
|
&do_session,
|
||||||
beast::ssl_stream<beast::tcp_stream>(
|
ssl::stream<beast::tcp_stream>(
|
||||||
std::move(socket), ctx),
|
std::move(socket), ctx),
|
||||||
doc_root,
|
doc_root,
|
||||||
std::placeholders::_1),
|
std::placeholders::_1),
|
||||||
|
@ -17,14 +17,13 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -393,7 +392,7 @@ class ssl_session
|
|||||||
: public session<ssl_session>
|
: public session<ssl_session>
|
||||||
, public std::enable_shared_from_this<ssl_session>
|
, public std::enable_shared_from_this<ssl_session>
|
||||||
{
|
{
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Create the session
|
// Create the session
|
||||||
@ -410,7 +409,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Called by the base class
|
// Called by the base class
|
||||||
beast::ssl_stream<beast::tcp_stream>&
|
ssl::stream<beast::tcp_stream>&
|
||||||
stream()
|
stream()
|
||||||
{
|
{
|
||||||
return stream_;
|
return stream_;
|
||||||
|
@ -17,10 +17,10 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/coroutine.hpp>
|
#include <boost/asio/coroutine.hpp>
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -239,7 +239,7 @@ class session
|
|||||||
: public boost::asio::coroutine
|
: public boost::asio::coroutine
|
||||||
, public std::enable_shared_from_this<session>
|
, public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
beast::ssl_stream<beast::tcp_stream> stream_;
|
ssl::stream<beast::tcp_stream> stream_;
|
||||||
beast::flat_buffer buffer_;
|
beast::flat_buffer buffer_;
|
||||||
std::shared_ptr<std::string const> doc_root_;
|
std::shared_ptr<std::string const> doc_root_;
|
||||||
http::request<http::string_body> req_;
|
http::request<http::string_body> req_;
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/http.hpp>
|
#include <boost/beast/http.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/version.hpp>
|
#include <boost/beast/version.hpp>
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
#include <boost/asio/ip/tcp.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/ssl/stream.hpp>
|
#include <boost/asio/ssl/stream.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
@ -220,7 +220,7 @@ do_session(
|
|||||||
beast::error_code ec;
|
beast::error_code ec;
|
||||||
|
|
||||||
// Construct the stream around the socket
|
// Construct the stream around the socket
|
||||||
beast::ssl_stream<tcp::socket&> stream{socket, ctx};
|
ssl::stream<tcp::socket&> stream{socket, ctx};
|
||||||
|
|
||||||
// Perform the SSL handshake
|
// Perform the SSL handshake
|
||||||
stream.handshake(ssl::stream_base::server, ec);
|
stream.handshake(ssl::stream_base::server, ec);
|
||||||
|
@ -16,13 +16,12 @@
|
|||||||
#include "example/common/root_certificates.hpp"
|
#include "example/common/root_certificates.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <boost/asio/system_executor.hpp>
|
#include <boost/asio/system_executor.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -47,8 +46,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
class session : public std::enable_shared_from_this<session>
|
class session : public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
tcp::resolver resolver_;
|
tcp::resolver resolver_;
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws_;
|
||||||
beast::ssl_stream<beast::tcp_stream>> ws_;
|
|
||||||
beast::flat_buffer buffer_;
|
beast::flat_buffer buffer_;
|
||||||
std::string host_;
|
std::string host_;
|
||||||
std::string text_;
|
std::string text_;
|
||||||
|
@ -16,12 +16,11 @@
|
|||||||
#include "example/common/root_certificates.hpp"
|
#include "example/common/root_certificates.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
#include <boost/asio/strand.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -46,8 +45,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
class session : public std::enable_shared_from_this<session>
|
class session : public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
tcp::resolver resolver_;
|
tcp::resolver resolver_;
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws_;
|
||||||
beast::ssl_stream<beast::tcp_stream>> ws_;
|
|
||||||
beast::flat_buffer buffer_;
|
beast::flat_buffer buffer_;
|
||||||
std::string host_;
|
std::string host_;
|
||||||
std::string text_;
|
std::string text_;
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
#include "example/common/root_certificates.hpp"
|
#include "example/common/root_certificates.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/asio/spawn.hpp>
|
#include <boost/asio/spawn.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -55,8 +55,7 @@ do_session(
|
|||||||
|
|
||||||
// These objects perform our I/O
|
// These objects perform our I/O
|
||||||
tcp::resolver resolver(ioc);
|
tcp::resolver resolver(ioc);
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws(ioc, ctx);
|
||||||
beast::ssl_stream<beast::tcp_stream>> ws(ioc, ctx);
|
|
||||||
|
|
||||||
// Look up the domain name
|
// Look up the domain name
|
||||||
auto const results = resolver.async_resolve(host, port, yield[ec]);
|
auto const results = resolver.async_resolve(host, port, yield[ec]);
|
||||||
|
@ -16,12 +16,11 @@
|
|||||||
#include "example/common/root_certificates.hpp"
|
#include "example/common/root_certificates.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/asio/connect.hpp>
|
#include <boost/asio/connect.hpp>
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
#include <boost/asio/ip/tcp.hpp>
|
||||||
#include <boost/asio/ssl/stream.hpp>
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -62,13 +61,13 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
// These objects perform our I/O
|
// These objects perform our I/O
|
||||||
tcp::resolver resolver{ioc};
|
tcp::resolver resolver{ioc};
|
||||||
websocket::stream<beast::ssl_stream<tcp::socket>> ws{ioc, ctx};
|
websocket::stream<ssl::stream<tcp::socket>> ws{ioc, ctx};
|
||||||
|
|
||||||
// Look up the domain name
|
// Look up the domain name
|
||||||
auto const results = resolver.resolve(host, port);
|
auto const results = resolver.resolve(host, port);
|
||||||
|
|
||||||
// Make the connection on the IP address we get from a lookup
|
// Make the connection on the IP address we get from a lookup
|
||||||
auto ep = net::connect(get_lowest_layer(ws), results);
|
auto ep = net::connect(beast::get_lowest_layer(ws), results);
|
||||||
|
|
||||||
// Set SNI Hostname (many hosts need this to handshake successfully)
|
// Set SNI Hostname (many hosts need this to handshake successfully)
|
||||||
if(! SSL_set_tlsext_host_name(ws.next_layer().native_handle(), host.c_str()))
|
if(! SSL_set_tlsext_host_name(ws.next_layer().native_handle(), host.c_str()))
|
||||||
|
@ -16,14 +16,13 @@
|
|||||||
#include "example/common/server_certificate.hpp"
|
#include "example/common/server_certificate.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
|
#include <boost/asio/strand.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -49,8 +48,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
// Echoes back all received WebSocket messages
|
// Echoes back all received WebSocket messages
|
||||||
class session : public std::enable_shared_from_this<session>
|
class session : public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws_;
|
||||||
beast::ssl_stream<beast::tcp_stream>> ws_;
|
|
||||||
beast::flat_buffer buffer_;
|
beast::flat_buffer buffer_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -16,16 +16,15 @@
|
|||||||
#include "example/common/server_certificate.hpp"
|
#include "example/common/server_certificate.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/asio/detached.hpp>
|
#include <boost/asio/detached.hpp>
|
||||||
#include <boost/asio/spawn.hpp>
|
#include <boost/asio/spawn.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -49,8 +48,7 @@ fail(beast::error_code ec, char const* what)
|
|||||||
// Echoes back all received WebSocket messages
|
// Echoes back all received WebSocket messages
|
||||||
void
|
void
|
||||||
do_session(
|
do_session(
|
||||||
websocket::stream<
|
websocket::stream<ssl::stream<beast::tcp_stream>>& ws,
|
||||||
beast::ssl_stream<beast::tcp_stream>>& ws,
|
|
||||||
net::yield_context yield)
|
net::yield_context yield)
|
||||||
{
|
{
|
||||||
beast::error_code ec;
|
beast::error_code ec;
|
||||||
@ -153,7 +151,7 @@ do_listen(
|
|||||||
acceptor.get_executor(),
|
acceptor.get_executor(),
|
||||||
std::bind(
|
std::bind(
|
||||||
&do_session,
|
&do_session,
|
||||||
websocket::stream<beast::ssl_stream<
|
websocket::stream<ssl::stream<
|
||||||
beast::tcp_stream>>(std::move(socket), ctx),
|
beast::tcp_stream>>(std::move(socket), ctx),
|
||||||
std::placeholders::_1),
|
std::placeholders::_1),
|
||||||
// we ignore the result of the session,
|
// we ignore the result of the session,
|
||||||
|
@ -16,12 +16,12 @@
|
|||||||
#include "example/common/server_certificate.hpp"
|
#include "example/common/server_certificate.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/asio/coroutine.hpp>
|
#include <boost/asio/coroutine.hpp>
|
||||||
#include <boost/asio/strand.hpp>
|
|
||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
|
#include <boost/asio/ssl.hpp>
|
||||||
|
#include <boost/asio/strand.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
@ -52,7 +52,7 @@ class session
|
|||||||
: public boost::asio::coroutine
|
: public boost::asio::coroutine
|
||||||
, public std::enable_shared_from_this<session>
|
, public std::enable_shared_from_this<session>
|
||||||
{
|
{
|
||||||
websocket::stream<beast::ssl_stream<beast::tcp_stream>> ws_;
|
websocket::stream<ssl::stream<beast::tcp_stream>> ws_;
|
||||||
beast::flat_buffer buffer_;
|
beast::flat_buffer buffer_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -16,11 +16,10 @@
|
|||||||
#include "example/common/server_certificate.hpp"
|
#include "example/common/server_certificate.hpp"
|
||||||
|
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/ssl.hpp>
|
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
#include <boost/beast/websocket/ssl.hpp>
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
#include <boost/asio/ip/tcp.hpp>
|
#include <boost/asio/ip/tcp.hpp>
|
||||||
#include <boost/asio/ssl/stream.hpp>
|
#include <boost/asio/ssl.hpp>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -43,7 +42,7 @@ do_session(tcp::socket socket, ssl::context& ctx)
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Construct the websocket stream around the socket
|
// Construct the websocket stream around the socket
|
||||||
websocket::stream<beast::ssl_stream<tcp::socket&>> ws{socket, ctx};
|
websocket::stream<ssl::stream<tcp::socket&>> ws{socket, ctx};
|
||||||
|
|
||||||
// Perform the SSL handshake
|
// Perform the SSL handshake
|
||||||
ws.next_layer().handshake(ssl::stream_base::server);
|
ws.next_layer().handshake(ssl::stream_base::server);
|
||||||
|
Reference in New Issue
Block a user