aboutsummaryrefslogtreecommitdiff
path: root/src/javascript
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-06-18 01:27:36 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-06-22 06:56:47 -0700
commitab888d2ebebea0d128f4151a4240180211d95f03 (patch)
tree7f0831ebc4a95f8abeda7191de6d0c9064346836 /src/javascript
parentbe9efacf1bf03fba016bb02f1dd25766fd874033 (diff)
downloadbun-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.cpp15
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;