From 91f0d5a0f704f36d578f371e66c53878b4d1c439 Mon Sep 17 00:00:00 2001 From: sahvx655-wq Date: Sun, 14 Jun 2026 22:55:02 +0530 Subject: [PATCH] accept websocket close code 1014 (bad gateway) --- include/boost/beast/websocket/detail/frame.hpp | 2 +- include/boost/beast/websocket/rfc6455.hpp | 9 +++------ test/beast/websocket/frame.cpp | 2 ++ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/include/boost/beast/websocket/detail/frame.hpp b/include/boost/beast/websocket/detail/frame.hpp index a7ab7467a8..2a69cbdddb 100644 --- a/include/boost/beast/websocket/detail/frame.hpp +++ b/include/boost/beast/websocket/detail/frame.hpp @@ -106,13 +106,13 @@ is_valid_close_code(std::uint16_t v) case close_code::internal_error: // 1011 case close_code::service_restart: // 1012 case close_code::try_again_later: // 1013 + case close_code::bad_gateway: // 1014 return true; // explicitly reserved case close_code::reserved1: // 1004 case close_code::no_status: // 1005 case close_code::abnormal: // 1006 - case close_code::reserved2: // 1014 case close_code::reserved3: // 1015 return false; } diff --git a/include/boost/beast/websocket/rfc6455.hpp b/include/boost/beast/websocket/rfc6455.hpp index 7611096bba..c8720bf1db 100644 --- a/include/boost/beast/websocket/rfc6455.hpp +++ b/include/boost/beast/websocket/rfc6455.hpp @@ -107,6 +107,9 @@ enum close_code : std::uint16_t /// The server is terminating the connection due to a temporary condition, e.g. it is overloaded and is casting off some of its clients. try_again_later = 1013, + /// The endpoint, acting as a gateway or proxy, received an invalid response from an upstream server, analogous to HTTP status 502. + bad_gateway = 1014, + //---- // // The following are illegal on the wire @@ -137,13 +140,7 @@ enum close_code : std::uint16_t abnormal = 1006, /** Reserved for future use by the WebSocket standard. - - This code is reserved and may not be sent. - */ - reserved2 = 1014, - /** Reserved for future use by the WebSocket standard. - This code is reserved and may not be sent. */ reserved3 = 1015 diff --git a/test/beast/websocket/frame.cpp b/test/beast/websocket/frame.cpp index 8380e132c4..8ff0f1107a 100644 --- a/test/beast/websocket/frame.cpp +++ b/test/beast/websocket/frame.cpp @@ -27,11 +27,13 @@ class frame_test BEAST_EXPECT(! is_valid_close_code(1004)); BEAST_EXPECT(! is_valid_close_code(1005)); BEAST_EXPECT(! is_valid_close_code(1006)); + BEAST_EXPECT(! is_valid_close_code(1015)); BEAST_EXPECT(! is_valid_close_code(1016)); BEAST_EXPECT(! is_valid_close_code(2000)); BEAST_EXPECT(! is_valid_close_code(2999)); BEAST_EXPECT(is_valid_close_code(1000)); BEAST_EXPECT(is_valid_close_code(1002)); + BEAST_EXPECT(is_valid_close_code(1014)); BEAST_EXPECT(is_valid_close_code(3000)); BEAST_EXPECT(is_valid_close_code(4000)); BEAST_EXPECT(is_valid_close_code(5000));