diff options
Diffstat (limited to 'boost/beast/websocket/error.hpp')
-rw-r--r-- | boost/beast/websocket/error.hpp | 225 |
1 files changed, 217 insertions, 8 deletions
diff --git a/boost/beast/websocket/error.hpp b/boost/beast/websocket/error.hpp index 139a20879d..d4e5197100 100644 --- a/boost/beast/websocket/error.hpp +++ b/boost/beast/websocket/error.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_BEAST_WEBSOCKET_ERROR_HPP #define BOOST_BEAST_WEBSOCKET_ERROR_HPP +#include <boost/beast/websocket/detail/error.hpp> #include <boost/beast/core/detail/config.hpp> #include <boost/beast/core/error.hpp> @@ -20,22 +21,230 @@ namespace websocket { /// Error codes returned from @ref beast::websocket::stream operations. enum class error { - /// Both sides performed a WebSocket close + /** The WebSocket stream was gracefully closed at both endpoints + */ closed = 1, - /// WebSocket connection failed, protocol violation - failed, +/* The error codes error::failed and error::handshake_failed + are no longer in use. Please change your code to compare values + of type error_code against condition::handshake_failed + and condition::protocol_violation instead. + + Apologies for the inconvenience. - /// Upgrade handshake failed - handshake_failed, + - VFALCO +*/ +#if ! BOOST_BEAST_DOXYGEN + unused1 = 2, // failed + unused2 = 3, // handshake_failed +#endif - /// buffer overflow + /** The WebSocket operation caused a dynamic buffer overflow + */ buffer_overflow, - /// partial deflate block - partial_deflate_block + /** The WebSocket stream produced an incomplete deflate block + */ + partial_deflate_block, + + /** The WebSocket message exceeded the locally configured limit + */ + message_too_big, + + // + // Handshake failure errors + // + // These will compare equal to condition::handshake_failed + // + + /** The WebSocket handshake was not HTTP/1.1 + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + bad_http_version, + + /** The WebSocket handshake method was not GET + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + bad_method, + + /** The WebSocket handshake Host field is missing + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_host, + + /** The WebSocket handshake Connection field is missing + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_connection, + + /** The WebSocket handshake Connection field is missing the upgrade token + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_connection_upgrade, + + /** The WebSocket handshake Upgrade field is missing + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_upgrade, + + /** The WebSocket handshake Upgrade field is missing the websocket token + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_upgrade_websocket, + + /** The WebSocket handshake Sec-WebSocket-Key field is missing + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_sec_key, + + /** The WebSocket handshake Sec-WebSocket-Key field is invalid + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + bad_sec_key, + + /** The WebSocket handshake Sec-WebSocket-Version field is missing + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_sec_version, + + /** The WebSocket handshake Sec-WebSocket-Version field is invalid + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + bad_sec_version, + + /** The WebSocket handshake Sec-WebSocket-Accept field is missing + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + no_sec_accept, + + /** The WebSocket handshake Sec-WebSocket-Accept field is invalid + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + bad_sec_accept, + + /** The WebSocket handshake was declined by the remote peer + + Error codes with this value will compare equal to @ref condition::handshake_failed + */ + upgrade_declined, + + // + // Protocol errors + // + // These will compare equal to condition::protocol_violation + // + + /** The WebSocket frame contained an illegal opcode + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_opcode, + + /** The WebSocket data frame was unexpected + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_data_frame, + + /** The WebSocket continuation frame was unexpected + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_continuation, + + /** The WebSocket frame contained illegal reserved bits + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_reserved_bits, + + /** The WebSocket control frame was fragmented + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_control_fragment, + + /** The WebSocket control frame size was invalid + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_control_size, + + /** The WebSocket frame was unmasked + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_unmasked_frame, + + /** The WebSocket frame was masked + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_masked_frame, + + /** The WebSocket frame size was not canonical + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_size, + + /** The WebSocket frame payload was not valid utf8 + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_frame_payload, + + /** The WebSocket close frame reason code was invalid + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_close_code, + + /** The WebSocket close frame payload size was invalid + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_close_size, + + /** The WebSocket close frame payload was not valid utf8 + + Error codes with this value will compare equal to @ref condition::protocol_violation + */ + bad_close_payload }; +/// Error conditions corresponding to sets of error codes. +enum class condition +{ + /** The WebSocket handshake failed + + This condition indicates that the WebSocket handshake failed. If + the corresponding HTTP response indicates the keep-alive behavior, + then the handshake may be reattempted. + */ + handshake_failed = 1, + + /** A WebSocket protocol violation occurred + + This condition indicates that the remote peer on the WebSocket + connection sent data which violated the protocol. + */ + protocol_violation + }; + } // websocket } // beast } // boost |