diff options
Diffstat (limited to 'boost/beast/websocket/impl/ssl.hpp')
-rw-r--r-- | boost/beast/websocket/impl/ssl.hpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/boost/beast/websocket/impl/ssl.hpp b/boost/beast/websocket/impl/ssl.hpp new file mode 100644 index 0000000000..f553022619 --- /dev/null +++ b/boost/beast/websocket/impl/ssl.hpp @@ -0,0 +1,59 @@ +// +// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Official repository: https://github.com/boostorg/beast +// + +#ifndef BOOST_BEAST_WEBSOCKET_IMPL_SSL_HPP +#define BOOST_BEAST_WEBSOCKET_IMPL_SSL_HPP + +#include <utility> + +namespace boost { +namespace beast { + +/* + + See + http://stackoverflow.com/questions/32046034/what-is-the-proper-way-to-securely-disconnect-an-asio-ssl-socket/32054476#32054476 + + Behavior of ssl::stream regarding close_notify + + If the remote host calls async_shutdown then the + local host's async_read will complete with eof. + + If both hosts call async_shutdown then the calls + to async_shutdown will complete with eof. + +*/ + +template<class AsyncStream> +void +teardown( + role_type, + net::ssl::stream<AsyncStream>& stream, + error_code& ec) +{ + stream.shutdown(ec); +} + +template< + class AsyncStream, + class TeardownHandler> +void +async_teardown( + role_type, + net::ssl::stream<AsyncStream>& stream, + TeardownHandler&& handler) +{ + stream.async_shutdown( + std::forward<TeardownHandler>(handler)); +} + +} // beast +} // boost + +#endif |