aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/api/bun/socket.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/api/bun/socket.zig')
-rw-r--r--src/bun.js/api/bun/socket.zig29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/bun.js/api/bun/socket.zig b/src/bun.js/api/bun/socket.zig
index 12a4cffc8..8807d32de 100644
--- a/src/bun.js/api/bun/socket.zig
+++ b/src/bun.js/api/bun/socket.zig
@@ -1972,7 +1972,11 @@ fn NewSocket(comptime ssl: bool) type {
_: *JSC.CallFrame,
) callconv(.C) JSValue {
JSC.markBinding(@src());
- this.socket.open(!this.handlers.is_server);
+ if (comptime ssl) {
+ if (!this.detached) {
+ this.socket.open(!this.handlers.is_server);
+ }
+ }
return JSValue.jsUndefined();
}
@@ -2067,12 +2071,9 @@ fn NewSocket(comptime ssl: bool) type {
.connection = if (this.connection) |c| c.clone() else null,
.wrapped = .tls,
.protos = if (protos) |p| (bun.default_allocator.dupe(u8, p[0..protos_len]) catch unreachable) else null,
+ .server_name = if (socket_config.server_name) |server_name| (bun.default_allocator.dupe(u8, server_name[0..bun.len(server_name)]) catch unreachable) else null,
};
- if (socket_config.server_name) |server_name| {
- tls.server_name = bun.default_allocator.dupe(u8, server_name[0..bun.len(server_name)]) catch unreachable;
- }
-
var tls_js_value = tls.getThisValue(globalObject);
TLSSocket.dataSetCached(tls_js_value, globalObject, default_data);
@@ -2099,9 +2100,7 @@ fn NewSocket(comptime ssl: bool) type {
var raw = handlers.vm.allocator.create(TLSSocket) catch @panic("OOM");
var raw_handlers_ptr = handlers.vm.allocator.create(Handlers) catch @panic("OOM");
- this.handlers.unprotect();
-
- var cloned_handlers: Handlers = .{
+ raw_handlers_ptr.* = .{
.vm = globalObject.bunVM(),
.globalObject = globalObject,
.onOpen = this.handlers.onOpen,
@@ -2114,11 +2113,17 @@ 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,
};
-
- raw_handlers_ptr.* = cloned_handlers;
- raw_handlers_ptr.is_server = this.handlers.is_server;
- raw_handlers_ptr.protect();
+ this.handlers.onOpen = .zero;
+ this.handlers.onClose = .zero;
+ this.handlers.onData = .zero;
+ this.handlers.onWritable = .zero;
+ this.handlers.onTimeout = .zero;
+ this.handlers.onConnectError = .zero;
+ this.handlers.onEnd = .zero;
+ this.handlers.onError = .zero;
+ this.handlers.onHandshake = .zero;
raw.* = .{
.handlers = raw_handlers_ptr,
.this_value = .zero,