diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:12:59 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:12:59 +0900 |
commit | b8cf34c691623e4ec329053cbbf68522a855882d (patch) | |
tree | 34da08632a99677f6b79ecb65e5b655a5b69a67f /boost/beast/websocket/detail/frame.hpp | |
parent | 3fdc3e5ee96dca5b11d1694975a65200787eab86 (diff) | |
download | boost-b8cf34c691623e4ec329053cbbf68522a855882d.tar.gz boost-b8cf34c691623e4ec329053cbbf68522a855882d.tar.bz2 boost-b8cf34c691623e4ec329053cbbf68522a855882d.zip |
Imported Upstream version 1.67.0upstream/1.67.0
Diffstat (limited to 'boost/beast/websocket/detail/frame.hpp')
-rw-r--r-- | boost/beast/websocket/detail/frame.hpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/boost/beast/websocket/detail/frame.hpp b/boost/beast/websocket/detail/frame.hpp index 95080aeefc..c3bd1690a9 100644 --- a/boost/beast/websocket/detail/frame.hpp +++ b/boost/beast/websocket/detail/frame.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_BEAST_WEBSOCKET_DETAIL_FRAME_HPP #define BOOST_BEAST_WEBSOCKET_DETAIL_FRAME_HPP +#include <boost/beast/websocket/error.hpp> #include <boost/beast/websocket/rfc6455.hpp> #include <boost/beast/websocket/detail/utf8_checker.hpp> #include <boost/beast/core/buffers_suffix.hpp> @@ -75,7 +76,7 @@ native_to_little_uint32(std::uint32_t v, void* buf) p[3] = (v >> 24) & 0xff; } -/** WebSocket frame header opcodes. */ +// frame header opcodes enum class opcode : std::uint8_t { cont = 0, @@ -110,8 +111,7 @@ struct frame_header }; // holds the largest possible frame header -using fh_buffer = - flat_static_buffer<14>; +using fh_buffer = flat_static_buffer<14>; // holds the largest possible control frame using frame_buffer = @@ -245,8 +245,10 @@ read_ping(ping_data& data, Buffers const& bs) // template<class Buffers> void -read_close(close_reason& cr, - Buffers const& bs, close_code& code) +read_close( + close_reason& cr, + Buffers const& bs, + error_code& ec) { using boost::asio::buffer; using boost::asio::buffer_copy; @@ -257,12 +259,13 @@ read_close(close_reason& cr, if(n == 0) { cr = close_reason{}; - code = close_code::none; + ec.assign(0, ec.category()); return; } if(n == 1) { - code = close_code::protocol_error; + // invalid payload size == 1 + ec = error::bad_close_size; return; } buffers_suffix<Buffers> cb(bs); @@ -274,7 +277,8 @@ read_close(close_reason& cr, n -= 2; if(! is_valid_close_code(cr.code)) { - code = close_code::protocol_error; + // invalid close code + ec = error::bad_close_code; return; } } @@ -285,7 +289,8 @@ read_close(close_reason& cr, if(! check_utf8( cr.reason.data(), cr.reason.size())) { - code = close_code::protocol_error; + // not valid utf-8 + ec = error::bad_close_payload; return; } } @@ -293,7 +298,7 @@ read_close(close_reason& cr, { cr.reason = ""; } - code = close_code::none; + ec.assign(0, ec.category()); } } // detail |