aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/bun.js/api/bun/socket.zig24
-rw-r--r--src/bun.js/api/sockets.classes.ts8
-rw-r--r--src/bun.js/bindings/JSSink.cpp2
-rw-r--r--src/bun.js/bindings/JSSink.h2
-rw-r--r--src/bun.js/bindings/ZigGeneratedClasses.cpp82
-rw-r--r--src/bun.js/bindings/generated_classes.zig18
-rw-r--r--src/deps/uws.zig2
-rw-r--r--src/js/node/net.js29
-rw-r--r--src/js/out/modules/node/net.js17
9 files changed, 53 insertions, 131 deletions
diff --git a/src/bun.js/api/bun/socket.zig b/src/bun.js/api/bun/socket.zig
index 8807d32de..1d85c705c 100644
--- a/src/bun.js/api/bun/socket.zig
+++ b/src/bun.js/api/bun/socket.zig
@@ -1966,24 +1966,10 @@ fn NewSocket(comptime ssl: bool) type {
return JSValue.jsUndefined();
}
- pub fn open(
- this: *This,
- _: *JSC.JSGlobalObject,
- _: *JSC.CallFrame,
- ) callconv(.C) JSValue {
- JSC.markBinding(@src());
- if (comptime ssl) {
- if (!this.detached) {
- this.socket.open(!this.handlers.is_server);
- }
- }
- return JSValue.jsUndefined();
- }
-
// this invalidates the current socket returning 2 new sockets
// one for non-TLS and another for TLS
// handlers for non-TLS are preserved
- pub fn wrapTLS(
+ pub fn upgradeTLS(
this: *This,
globalObject: *JSC.JSGlobalObject,
callframe: *JSC.CallFrame,
@@ -2058,10 +2044,11 @@ fn NewSocket(comptime ssl: bool) type {
const ext_size = @sizeOf(WrappedSocket);
+ const is_server = this.handlers.is_server;
var tls = handlers.vm.allocator.create(TLSSocket) catch @panic("OOM");
var handlers_ptr = handlers.vm.allocator.create(Handlers) catch @panic("OOM");
handlers_ptr.* = handlers;
- handlers_ptr.is_server = this.handlers.is_server;
+ handlers_ptr.is_server = is_server;
handlers_ptr.protect();
tls.* = .{
@@ -2113,7 +2100,7 @@ fn NewSocket(comptime ssl: bool) type {
.onError = this.handlers.onError,
.onHandshake = this.handlers.onHandshake,
.binary_type = this.handlers.binary_type,
- .is_server = this.handlers.is_server,
+ .is_server = is_server,
};
this.handlers.onOpen = .zero;
this.handlers.onClose = .zero;
@@ -2147,6 +2134,9 @@ fn NewSocket(comptime ssl: bool) type {
// mark both instances on socket data
new_socket.ext(WrappedSocket).?.* = .{ .tcp = raw, .tls = tls };
+ // start TLS handshake after we set ext
+ new_socket.startTLS(!this.handlers.is_server);
+
//detach and invalidate the old instance
this.detached = true;
if (this.reffer.has) {
diff --git a/src/bun.js/api/sockets.classes.ts b/src/bun.js/api/sockets.classes.ts
index 0c7847e19..5bd073b9f 100644
--- a/src/bun.js/api/sockets.classes.ts
+++ b/src/bun.js/api/sockets.classes.ts
@@ -22,14 +22,10 @@ function generate(ssl) {
fn: "write",
length: 3,
},
- wrapTLS: {
- fn: "wrapTLS",
+ upgradeTLS: {
+ fn: "upgradeTLS",
length: 1,
},
- open: {
- fn: "open",
- length: 0,
- },
end: {
fn: "end",
length: 3,
diff --git a/src/bun.js/bindings/JSSink.cpp b/src/bun.js/bindings/JSSink.cpp
index 5f99d3792..ed2554dc7 100644
--- a/src/bun.js/bindings/JSSink.cpp
+++ b/src/bun.js/bindings/JSSink.cpp
@@ -1,6 +1,6 @@
// AUTO-GENERATED FILE. DO NOT EDIT.
-// Generated by 'make generate-sink' at 2023-07-02T16:19:51.440Z
+// Generated by 'make generate-sink' at 2023-07-06T14:22:07.346Z
// To regenerate this file, run:
//
// make generate-sink
diff --git a/src/bun.js/bindings/JSSink.h b/src/bun.js/bindings/JSSink.h
index 41d7065dc..386554ebb 100644
--- a/src/bun.js/bindings/JSSink.h
+++ b/src/bun.js/bindings/JSSink.h
@@ -1,6 +1,6 @@
// AUTO-GENERATED FILE. DO NOT EDIT.
-// Generated by 'make generate-sink' at 2023-07-02T16:19:51.438Z
+// Generated by 'make generate-sink' at 2023-07-06T14:22:07.345Z
//
#pragma once
diff --git a/src/bun.js/bindings/ZigGeneratedClasses.cpp b/src/bun.js/bindings/ZigGeneratedClasses.cpp
index 866970e4d..b4d672328 100644
--- a/src/bun.js/bindings/ZigGeneratedClasses.cpp
+++ b/src/bun.js/bindings/ZigGeneratedClasses.cpp
@@ -16899,9 +16899,6 @@ JSC_DECLARE_CUSTOM_GETTER(TCPSocketPrototype__listenerGetterWrap);
extern "C" JSC::EncodedJSValue TCPSocketPrototype__getLocalPort(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject);
JSC_DECLARE_CUSTOM_GETTER(TCPSocketPrototype__localPortGetterWrap);
-extern "C" EncodedJSValue TCPSocketPrototype__open(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
-JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__openCallback);
-
extern "C" JSC::EncodedJSValue TCPSocketPrototype__getReadyState(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject);
JSC_DECLARE_CUSTOM_GETTER(TCPSocketPrototype__readyStateGetterWrap);
@@ -16926,8 +16923,8 @@ JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__timeoutCallback);
extern "C" EncodedJSValue TCPSocketPrototype__unref(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__unrefCallback);
-extern "C" EncodedJSValue TCPSocketPrototype__wrapTLS(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
-JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__wrapTLSCallback);
+extern "C" EncodedJSValue TCPSocketPrototype__upgradeTLS(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
+JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__upgradeTLSCallback);
extern "C" EncodedJSValue TCPSocketPrototype__write(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__writeCallback);
@@ -16943,7 +16940,6 @@ static const HashTableValue JSTCPSocketPrototypeTableValues[] = {
{ "getAuthorizationError"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getAuthorizationErrorCallback, 0 } },
{ "listener"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__listenerGetterWrap, 0 } },
{ "localPort"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__localPortGetterWrap, 0 } },
- { "open"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__openCallback, 0 } },
{ "readyState"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__readyStateGetterWrap, 0 } },
{ "ref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__refCallback, 0 } },
{ "reload"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__reloadCallback, 1 } },
@@ -16952,7 +16948,7 @@ static const HashTableValue JSTCPSocketPrototypeTableValues[] = {
{ "shutdown"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__shutdownCallback, 1 } },
{ "timeout"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__timeoutCallback, 1 } },
{ "unref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__unrefCallback, 0 } },
- { "wrapTLS"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__wrapTLSCallback, 1 } },
+ { "upgradeTLS"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__upgradeTLSCallback, 1 } },
{ "write"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__writeCallback, 3 } }
};
@@ -17141,33 +17137,6 @@ JSC_DEFINE_CUSTOM_GETTER(TCPSocketPrototype__localPortGetterWrap, (JSGlobalObjec
RELEASE_AND_RETURN(throwScope, result);
}
-JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__openCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
-{
- auto& vm = lexicalGlobalObject->vm();
-
- JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue());
-
- if (UNLIKELY(!thisObject)) {
- auto throwScope = DECLARE_THROW_SCOPE(vm);
- return throwVMTypeError(lexicalGlobalObject, throwScope);
- }
-
- JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject);
-
-#ifdef BUN_DEBUG
- /** View the file name of the JS file that called this function
- * from a debugger */
- SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm);
- const char* fileName = sourceOrigin.string().utf8().data();
- static const char* lastFileName = nullptr;
- if (lastFileName != fileName) {
- lastFileName = fileName;
- }
-#endif
-
- return TCPSocketPrototype__open(thisObject->wrapped(), lexicalGlobalObject, callFrame);
-}
-
JSC_DEFINE_CUSTOM_GETTER(TCPSocketPrototype__readyStateGetterWrap, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName))
{
auto& vm = lexicalGlobalObject->vm();
@@ -17373,7 +17342,7 @@ JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__unrefCallback, (JSGlobalObject * le
return TCPSocketPrototype__unref(thisObject->wrapped(), lexicalGlobalObject, callFrame);
}
-JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__wrapTLSCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
+JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__upgradeTLSCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
{
auto& vm = lexicalGlobalObject->vm();
@@ -17397,7 +17366,7 @@ JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__wrapTLSCallback, (JSGlobalObject *
}
#endif
- return TCPSocketPrototype__wrapTLS(thisObject->wrapped(), lexicalGlobalObject, callFrame);
+ return TCPSocketPrototype__upgradeTLS(thisObject->wrapped(), lexicalGlobalObject, callFrame);
}
JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__writeCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
@@ -17615,9 +17584,6 @@ JSC_DECLARE_CUSTOM_GETTER(TLSSocketPrototype__listenerGetterWrap);
extern "C" JSC::EncodedJSValue TLSSocketPrototype__getLocalPort(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject);
JSC_DECLARE_CUSTOM_GETTER(TLSSocketPrototype__localPortGetterWrap);
-extern "C" EncodedJSValue TLSSocketPrototype__open(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
-JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__openCallback);
-
extern "C" JSC::EncodedJSValue TLSSocketPrototype__getReadyState(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject);
JSC_DECLARE_CUSTOM_GETTER(TLSSocketPrototype__readyStateGetterWrap);
@@ -17642,8 +17608,8 @@ JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__timeoutCallback);
extern "C" EncodedJSValue TLSSocketPrototype__unref(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__unrefCallback);
-extern "C" EncodedJSValue TLSSocketPrototype__wrapTLS(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
-JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__wrapTLSCallback);
+extern "C" EncodedJSValue TLSSocketPrototype__upgradeTLS(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
+JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__upgradeTLSCallback);
extern "C" EncodedJSValue TLSSocketPrototype__write(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame);
JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__writeCallback);
@@ -17659,7 +17625,6 @@ static const HashTableValue JSTLSSocketPrototypeTableValues[] = {
{ "getAuthorizationError"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getAuthorizationErrorCallback, 0 } },
{ "listener"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__listenerGetterWrap, 0 } },
{ "localPort"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__localPortGetterWrap, 0 } },
- { "open"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__openCallback, 0 } },
{ "readyState"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__readyStateGetterWrap, 0 } },
{ "ref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__refCallback, 0 } },
{ "reload"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__reloadCallback, 1 } },
@@ -17668,7 +17633,7 @@ static const HashTableValue JSTLSSocketPrototypeTableValues[] = {
{ "shutdown"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__shutdownCallback, 1 } },
{ "timeout"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__timeoutCallback, 1 } },
{ "unref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__unrefCallback, 0 } },
- { "wrapTLS"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__wrapTLSCallback, 1 } },
+ { "upgradeTLS"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__upgradeTLSCallback, 1 } },
{ "write"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__writeCallback, 3 } }
};
@@ -17857,33 +17822,6 @@ JSC_DEFINE_CUSTOM_GETTER(TLSSocketPrototype__localPortGetterWrap, (JSGlobalObjec
RELEASE_AND_RETURN(throwScope, result);
}
-JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__openCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
-{
- auto& vm = lexicalGlobalObject->vm();
-
- JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue());
-
- if (UNLIKELY(!thisObject)) {
- auto throwScope = DECLARE_THROW_SCOPE(vm);
- return throwVMTypeError(lexicalGlobalObject, throwScope);
- }
-
- JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject);
-
-#ifdef BUN_DEBUG
- /** View the file name of the JS file that called this function
- * from a debugger */
- SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm);
- const char* fileName = sourceOrigin.string().utf8().data();
- static const char* lastFileName = nullptr;
- if (lastFileName != fileName) {
- lastFileName = fileName;
- }
-#endif
-
- return TLSSocketPrototype__open(thisObject->wrapped(), lexicalGlobalObject, callFrame);
-}
-
JSC_DEFINE_CUSTOM_GETTER(TLSSocketPrototype__readyStateGetterWrap, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName))
{
auto& vm = lexicalGlobalObject->vm();
@@ -18089,7 +18027,7 @@ JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__unrefCallback, (JSGlobalObject * le
return TLSSocketPrototype__unref(thisObject->wrapped(), lexicalGlobalObject, callFrame);
}
-JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__wrapTLSCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
+JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__upgradeTLSCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
{
auto& vm = lexicalGlobalObject->vm();
@@ -18113,7 +18051,7 @@ JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__wrapTLSCallback, (JSGlobalObject *
}
#endif
- return TLSSocketPrototype__wrapTLS(thisObject->wrapped(), lexicalGlobalObject, callFrame);
+ return TLSSocketPrototype__upgradeTLS(thisObject->wrapped(), lexicalGlobalObject, callFrame);
}
JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__writeCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame))
diff --git a/src/bun.js/bindings/generated_classes.zig b/src/bun.js/bindings/generated_classes.zig
index a220b6814..171bba792 100644
--- a/src/bun.js/bindings/generated_classes.zig
+++ b/src/bun.js/bindings/generated_classes.zig
@@ -4449,8 +4449,6 @@ pub const JSTCPSocket = struct {
if (@TypeOf(TCPSocket.getLocalPort) != GetterType)
@compileLog("Expected TCPSocket.getLocalPort to be a getter");
- if (@TypeOf(TCPSocket.open) != CallbackType)
- @compileLog("Expected TCPSocket.open to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.open)));
if (@TypeOf(TCPSocket.getReadyState) != GetterType)
@compileLog("Expected TCPSocket.getReadyState to be a getter");
@@ -4469,8 +4467,8 @@ pub const JSTCPSocket = struct {
@compileLog("Expected TCPSocket.timeout to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.timeout)));
if (@TypeOf(TCPSocket.unref) != CallbackType)
@compileLog("Expected TCPSocket.unref to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.unref)));
- if (@TypeOf(TCPSocket.wrapTLS) != CallbackType)
- @compileLog("Expected TCPSocket.wrapTLS to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.wrapTLS)));
+ if (@TypeOf(TCPSocket.upgradeTLS) != CallbackType)
+ @compileLog("Expected TCPSocket.upgradeTLS to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.upgradeTLS)));
if (@TypeOf(TCPSocket.write) != CallbackType)
@compileLog("Expected TCPSocket.write to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.write)));
if (!JSC.is_bindgen) {
@@ -4486,7 +4484,6 @@ pub const JSTCPSocket = struct {
@export(TCPSocket.getReadyState, .{ .name = "TCPSocketPrototype__getReadyState" });
@export(TCPSocket.getRemoteAddress, .{ .name = "TCPSocketPrototype__getRemoteAddress" });
@export(TCPSocket.hasPendingActivity, .{ .name = "TCPSocket__hasPendingActivity" });
- @export(TCPSocket.open, .{ .name = "TCPSocketPrototype__open" });
@export(TCPSocket.ref, .{ .name = "TCPSocketPrototype__ref" });
@export(TCPSocket.reload, .{ .name = "TCPSocketPrototype__reload" });
@export(TCPSocket.setData, .{ .name = "TCPSocketPrototype__setData" });
@@ -4494,7 +4491,7 @@ pub const JSTCPSocket = struct {
@export(TCPSocket.shutdown, .{ .name = "TCPSocketPrototype__shutdown" });
@export(TCPSocket.timeout, .{ .name = "TCPSocketPrototype__timeout" });
@export(TCPSocket.unref, .{ .name = "TCPSocketPrototype__unref" });
- @export(TCPSocket.wrapTLS, .{ .name = "TCPSocketPrototype__wrapTLS" });
+ @export(TCPSocket.upgradeTLS, .{ .name = "TCPSocketPrototype__upgradeTLS" });
@export(TCPSocket.write, .{ .name = "TCPSocketPrototype__write" });
}
}
@@ -4617,8 +4614,6 @@ pub const JSTLSSocket = struct {
if (@TypeOf(TLSSocket.getLocalPort) != GetterType)
@compileLog("Expected TLSSocket.getLocalPort to be a getter");
- if (@TypeOf(TLSSocket.open) != CallbackType)
- @compileLog("Expected TLSSocket.open to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.open)));
if (@TypeOf(TLSSocket.getReadyState) != GetterType)
@compileLog("Expected TLSSocket.getReadyState to be a getter");
@@ -4637,8 +4632,8 @@ pub const JSTLSSocket = struct {
@compileLog("Expected TLSSocket.timeout to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.timeout)));
if (@TypeOf(TLSSocket.unref) != CallbackType)
@compileLog("Expected TLSSocket.unref to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.unref)));
- if (@TypeOf(TLSSocket.wrapTLS) != CallbackType)
- @compileLog("Expected TLSSocket.wrapTLS to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.wrapTLS)));
+ if (@TypeOf(TLSSocket.upgradeTLS) != CallbackType)
+ @compileLog("Expected TLSSocket.upgradeTLS to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.upgradeTLS)));
if (@TypeOf(TLSSocket.write) != CallbackType)
@compileLog("Expected TLSSocket.write to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.write)));
if (!JSC.is_bindgen) {
@@ -4654,7 +4649,6 @@ pub const JSTLSSocket = struct {
@export(TLSSocket.getReadyState, .{ .name = "TLSSocketPrototype__getReadyState" });
@export(TLSSocket.getRemoteAddress, .{ .name = "TLSSocketPrototype__getRemoteAddress" });
@export(TLSSocket.hasPendingActivity, .{ .name = "TLSSocket__hasPendingActivity" });
- @export(TLSSocket.open, .{ .name = "TLSSocketPrototype__open" });
@export(TLSSocket.ref, .{ .name = "TLSSocketPrototype__ref" });
@export(TLSSocket.reload, .{ .name = "TLSSocketPrototype__reload" });
@export(TLSSocket.setData, .{ .name = "TLSSocketPrototype__setData" });
@@ -4662,7 +4656,7 @@ pub const JSTLSSocket = struct {
@export(TLSSocket.shutdown, .{ .name = "TLSSocketPrototype__shutdown" });
@export(TLSSocket.timeout, .{ .name = "TLSSocketPrototype__timeout" });
@export(TLSSocket.unref, .{ .name = "TLSSocketPrototype__unref" });
- @export(TLSSocket.wrapTLS, .{ .name = "TLSSocketPrototype__wrapTLS" });
+ @export(TLSSocket.upgradeTLS, .{ .name = "TLSSocketPrototype__upgradeTLS" });
@export(TLSSocket.write, .{ .name = "TLSSocketPrototype__write" });
}
}
diff --git a/src/deps/uws.zig b/src/deps/uws.zig
index c2cd24063..83edbe410 100644
--- a/src/deps/uws.zig
+++ b/src/deps/uws.zig
@@ -40,7 +40,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type {
return us_socket_timeout(comptime ssl_int, this.socket, seconds);
}
- pub fn open(this: ThisSocket, is_client: bool) void {
+ pub fn startTLS(this: ThisSocket, is_client: bool) void {
_ = us_socket_open(comptime ssl_int, this.socket, @intFromBool(is_client), null, 0);
}
diff --git a/src/js/node/net.js b/src/js/node/net.js
index 1b7742dd1..6c690b349 100644
--- a/src/js/node/net.js
+++ b/src/js/node/net.js
@@ -120,11 +120,16 @@ const Socket = (function (InternalSocket) {
socket.ref();
self[bunSocketInternal] = socket;
self.connecting = false;
- self.emit("connect", self);
+ if (!self.#upgraded) {
+ // this is not actually emitted on nodejs when socket used on the connection
+ // this is already emmited on non-TLS socket and on TLS socket is emmited secureConnect on handshake
+ self.emit("connect", self);
+ }
Socket.#Drain(socket);
},
handshake(socket, success, verifyError) {
const { data: self } = socket;
+
self._securePending = false;
self.secureConnecting = false;
self._secureEstablished = !!success;
@@ -301,6 +306,7 @@ const Socket = (function (InternalSocket) {
_parent;
_parentWrap;
#socket;
+ #upgraded;
constructor(options) {
const { socket, signal, write, read, allowHalfOpen = false, ...opts } = options || {};
@@ -314,6 +320,7 @@ const Socket = (function (InternalSocket) {
this._parent = this;
this._parentWrap = this;
this.#pendingRead = undefined;
+ this.#upgraded = false;
if (socket instanceof Socket) {
this.#socket = socket;
}
@@ -442,7 +449,9 @@ const Socket = (function (InternalSocket) {
const socket = connection[bunSocketInternal];
if (socket) {
- const result = socket.wrapTLS({
+ this.connecting = true;
+ this.#upgraded = true;
+ const result = socket.upgradeTLS({
data: this,
tls,
socket: Socket.#Handlers,
@@ -453,13 +462,7 @@ const Socket = (function (InternalSocket) {
connection[bunSocketInternal] = raw;
raw.timeout(raw.timeout);
raw.connecting = false;
- // set new socket
this[bunSocketInternal] = tls;
- tls.timeout(tls.timeout);
- tls.connecting = true;
- this[bunSocketInternal] = socket;
- // start tls
- tls.open();
} else {
this[bunSocketInternal] = null;
throw new Error("Invalid socket");
@@ -470,7 +473,9 @@ const Socket = (function (InternalSocket) {
const socket = connection[bunSocketInternal];
if (!socket) return;
- const result = socket.wrapTLS({
+ this.connecting = true;
+ this.#upgraded = true;
+ const result = socket.upgradeTLS({
data: this,
tls,
socket: Socket.#Handlers,
@@ -482,13 +487,7 @@ const Socket = (function (InternalSocket) {
connection[bunSocketInternal] = raw;
raw.timeout(raw.timeout);
raw.connecting = false;
- // set new socket
this[bunSocketInternal] = tls;
- tls.timeout(tls.timeout);
- tls.connecting = true;
- this[bunSocketInternal] = socket;
- // start tls
- tls.open();
} else {
this[bunSocketInternal] = null;
throw new Error("Invalid socket");
diff --git a/src/js/out/modules/node/net.js b/src/js/out/modules/node/net.js
index c34f86b04..7f3102648 100644
--- a/src/js/out/modules/node/net.js
+++ b/src/js/out/modules/node/net.js
@@ -62,7 +62,9 @@ var isIPv4 = function(s) {
},
open(socket) {
const self = socket.data;
- socket.timeout(self.timeout), socket.ref(), self[bunSocketInternal] = socket, self.connecting = !1, self.emit("connect", self), Socket2.#Drain(socket);
+ if (socket.timeout(self.timeout), socket.ref(), self[bunSocketInternal] = socket, self.connecting = !1, !self.#upgraded)
+ self.emit("connect", self);
+ Socket2.#Drain(socket);
},
handshake(socket, success, verifyError) {
const { data: self } = socket;
@@ -173,6 +175,7 @@ var isIPv4 = function(s) {
_parent;
_parentWrap;
#socket;
+ #upgraded;
constructor(options) {
const { socket, signal, write, read, allowHalfOpen = !1, ...opts } = options || {};
super({
@@ -181,7 +184,7 @@ var isIPv4 = function(s) {
readable: !0,
writable: !0
});
- if (this._handle = this, this._parent = this, this._parentWrap = this, this.#pendingRead = void 0, socket instanceof Socket2)
+ if (this._handle = this, this._parent = this, this._parentWrap = this, this.#pendingRead = void 0, this.#upgraded = !1, socket instanceof Socket2)
this.#socket = socket;
signal?.once("abort", () => this.destroy()), this.once("connect", () => this.emit("ready"));
}
@@ -256,14 +259,15 @@ var isIPv4 = function(s) {
if (connection) {
const socket2 = connection[bunSocketInternal];
if (socket2) {
- const result = socket2.wrapTLS({
+ this.connecting = !0, this.#upgraded = !0;
+ const result = socket2.upgradeTLS({
data: this,
tls,
socket: Socket2.#Handlers
});
if (result) {
const [raw, tls2] = result;
- connection[bunSocketInternal] = raw, raw.timeout(raw.timeout), raw.connecting = !1, this[bunSocketInternal] = tls2, tls2.timeout(tls2.timeout), tls2.connecting = !0, this[bunSocketInternal] = socket2, tls2.open();
+ connection[bunSocketInternal] = raw, raw.timeout(raw.timeout), raw.connecting = !1, this[bunSocketInternal] = tls2;
} else
throw this[bunSocketInternal] = null, new Error("Invalid socket");
} else
@@ -271,14 +275,15 @@ var isIPv4 = function(s) {
const socket3 = connection[bunSocketInternal];
if (!socket3)
return;
- const result = socket3.wrapTLS({
+ this.connecting = !0, this.#upgraded = !0;
+ const result = socket3.upgradeTLS({
data: this,
tls,
socket: Socket2.#Handlers
});
if (result) {
const [raw, tls2] = result;
- connection[bunSocketInternal] = raw, raw.timeout(raw.timeout), raw.connecting = !1, this[bunSocketInternal] = tls2, tls2.timeout(tls2.timeout), tls2.connecting = !0, this[bunSocketInternal] = socket3, tls2.open();
+ connection[bunSocketInternal] = raw, raw.timeout(raw.timeout), raw.connecting = !1, this[bunSocketInternal] = tls2;
} else
throw this[bunSocketInternal] = null, new Error("Invalid socket");
});