MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / onHeaderReady

Method onHeaderReady

Libraries/Http/HttpWebSocket.cpp:766–803  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

764 SC_TRY(connection.response.startResponse(101));
765 SC_TRY(connection.response.addHeader("Upgrade", "websocket"));
766 SC_TRY(connection.response.addHeader("Connection", "Upgrade"));
767 SC_TRY(connection.response.addHeader("Sec-WebSocket-Accept", accept));
768
769 transport.readableStream = &connection.getReadableTransportStream();
770 transport.writableStream = &connection.getWritableTransportStream();
771 transport.buffersPool = &connection.buffersPool;
772
773 SC_TRY(connection.response.sendHeaders(
774 {[&connection](AsyncBufferView::ID) { connection.getReadableTransportStream().resumeReading(); }}));
775 connection.markWebSocketUpgraded();
776 return Result(true);
777}
778
779Result HttpWebSocketHandshake::rejectServerConnection(HttpResponse& response,
780 const HttpWebSocketHandshakeResult& result)
781{
782 const int statusCode = result.httpStatusCode();
783 if (statusCode == 101)
784 return Result::Error(HttpResultCategory, HttpError::WebSocketRejectAcceptedRequest);
785 SC_TRY(response.startResponse(statusCode));
786 if (statusCode == 426)
787 {
788 SC_TRY(response.addHeader("Sec-WebSocket-Version", "13"));
789 }
790 SC_TRY(response.addContentLength(0));
791 SC_TRY(response.addHeader("Connection", "close"));
792 SC_TRY(response.sendHeaders());
793 return response.end();
794}
795
796Result HttpWebSocketClientHandshake::connect(HttpAsyncClient& newClient, AsyncEventLoop& loop, StringSpan url,
797 StringSpan newClientKey, HttpWebSocketTransportView& newTransport,
798 HttpWebSocketSha1Mode newSha1Mode)
799{
800 SC_TRY(HttpWebSocketHandshake::validateClientKey(newClientKey));
801 client = &newClient;
802 transport = &newTransport;
803 clientKey = newClientKey;
804 sha1Mode = newSha1Mode;
805 transport->reset();
806

Callers

nothing calls this directly

Calls 4

isControlFrameMethod · 0.80
ResultClass · 0.50
isValidMethod · 0.45

Tested by

no test coverage detected