| 1248 | |
| 1249 | Result HttpWebSocketEndpoint::applyOutgoingMask(HttpWebSocketFrameHeaderView& header, const uint8_t* maskKey) const |
| 1250 | { |
| 1251 | const bool requiresMask = scHttpWebSocketRequiresOutgoingMask(endpointRole); |
| 1252 | header.masked = requiresMask; |
| 1253 | if (requiresMask) |
| 1254 | { |
| 1255 | SC_TRY_MSG(maskKey != nullptr, "HttpWebSocketEndpoint mask key required for client frames"); |
| 1256 | for (size_t idx = 0; idx < 4; ++idx) |
| 1257 | { |
| 1258 | header.maskKey[idx] = maskKey[idx]; |
| 1259 | } |
| 1260 | } |
| 1261 | else |
| 1262 | { |
| 1263 | for (size_t idx = 0; idx < 4; ++idx) |
| 1264 | { |
| 1265 | header.maskKey[idx] = 0; |
| 1266 | } |
| 1267 | } |
| 1268 | return Result(true); |
| 1269 | } |
| 1270 | |
| 1271 | Result HttpWebSocketEndpoint::sendFrame(const HttpWebSocketFrameHeaderView& header, Span<const char> payload, |
| 1272 | Span<char> storage, Span<const char>& encodedFrame) |
| 1273 | { |
| 1274 | SC_TRY_MSG(header.payloadLength == payload.sizeInBytes(), |
| 1275 | "HttpWebSocketEndpoint payload does not match frame length"); |
| 1276 | |
| 1277 | Span<const char> encodedHeader; |
| 1278 | SC_TRY(writer.beginFrame(header, storage, encodedHeader)); |
| 1279 | SC_TRY_MSG(storage.sizeInBytes() >= encodedHeader.sizeInBytes() + payload.sizeInBytes(), |
| 1280 | "HttpWebSocketEndpoint frame storage too small"); |
nothing calls this directly
no test coverage detected