diff options
author | 2022-06-18 01:27:36 -0700 | |
---|---|---|
committer | 2022-06-22 06:56:47 -0700 | |
commit | ab888d2ebebea0d128f4151a4240180211d95f03 (patch) | |
tree | 7f0831ebc4a95f8abeda7191de6d0c9064346836 /src/javascript | |
parent | be9efacf1bf03fba016bb02f1dd25766fd874033 (diff) | |
download | bun-ab888d2ebebea0d128f4151a4240180211d95f03.tar.gz bun-ab888d2ebebea0d128f4151a4240180211d95f03.tar.zst bun-ab888d2ebebea0d128f4151a4240180211d95f03.zip |
It connects! but the frames are corrupt
Diffstat (limited to 'src/javascript')
-rw-r--r-- | src/javascript/jsc/bindings/webcore/WebSocket.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/javascript/jsc/bindings/webcore/WebSocket.cpp b/src/javascript/jsc/bindings/webcore/WebSocket.cpp index 691da6aae..9b996565c 100644 --- a/src/javascript/jsc/bindings/webcore/WebSocket.cpp +++ b/src/javascript/jsc/bindings/webcore/WebSocket.cpp @@ -420,6 +420,8 @@ ExceptionOr<void> WebSocket::send(const String& message) if (utf8.length() > 0) this->sendWebSocketData<false>(utf8.data(), utf8.length()); + delete utf8; + return {}; } @@ -490,22 +492,22 @@ void WebSocket::sendWebSocketData(const char* baseAddress, size_t length) switch (m_connectedWebSocketKind) { case ConnectedWebSocketKind::Client: { - this->m_connectedWebSocket.client->send({ baseAddress, length }, opCode, false); + this->m_connectedWebSocket.client->send({ baseAddress, length }, opCode); this->m_bufferedAmount = this->m_connectedWebSocket.client->getBufferedAmount(); break; } case ConnectedWebSocketKind::ClientSSL: { - this->m_connectedWebSocket.clientSSL->send({ baseAddress, length }, opCode, false); + this->m_connectedWebSocket.clientSSL->send({ baseAddress, length }, opCode); this->m_bufferedAmount = this->m_connectedWebSocket.clientSSL->getBufferedAmount(); break; } case ConnectedWebSocketKind::Server: { - this->m_connectedWebSocket.server->send({ baseAddress, length }, opCode, false); + this->m_connectedWebSocket.server->send({ baseAddress, length }, opCode); this->m_bufferedAmount = this->m_connectedWebSocket.server->getBufferedAmount(); break; } case ConnectedWebSocketKind::ServerSSL: { - this->m_connectedWebSocket.serverSSL->send({ baseAddress, length }, opCode, false); + this->m_connectedWebSocket.serverSSL->send({ baseAddress, length }, opCode); this->m_bufferedAmount = this->m_connectedWebSocket.serverSSL->getBufferedAmount(); break; } @@ -827,13 +829,14 @@ void WebSocket::dispatchErrorEventIfNeeded() void WebSocket::didConnect(us_socket_t* socket, char* bufferedData, size_t bufferedDataSize) { - m_state = OPEN; this->m_upgradeClient = nullptr; if (m_isSecure) { /* Adopting a socket invalidates it, do not rely on it directly to carry any data */ uWS::WebSocket<true, false, WebSocket*>* webSocket = (uWS::WebSocket<true, false, WebSocket*>*)us_socket_context_adopt_socket(1, (us_socket_context_t*)this->scriptExecutionContext()->connnectedWebSocketContext<true, false>(), socket, sizeof(uWS::WebSocketData) + sizeof(WebSocket*)); + webSocket->AsyncSocket<true>::uncork(); + webSocket->init(0, uWS::CompressOptions::DISABLED, uWS::BackPressure()); *webSocket->getUserData() = this; this->m_connectedWebSocket.clientSSL = webSocket; @@ -843,6 +846,8 @@ void WebSocket::didConnect(us_socket_t* socket, char* bufferedData, size_t buffe uWS::WebSocket<false, false, WebSocket*>* webSocket = (uWS::WebSocket<false, false, WebSocket*>*)us_socket_context_adopt_socket(1, (us_socket_context_t*)this->scriptExecutionContext()->connnectedWebSocketContext<false, false>(), socket, sizeof(uWS::WebSocketData) + sizeof(WebSocket*)); + webSocket->AsyncSocket<false>::uncork(); + webSocket->init(0, uWS::CompressOptions::DISABLED, uWS::BackPressure()); *webSocket->getUserData() = this; this->m_connectedWebSocket.client = webSocket; |