diff options
author | 2022-10-16 20:43:43 -0700 | |
---|---|---|
committer | 2022-10-16 20:43:43 -0700 | |
commit | 3c1e3792d602703a775b8a3e7031a4299159eff9 (patch) | |
tree | 778974affe303fae04c990623b0981f8bc1f96d1 | |
parent | 603164e66aa015c1bb175eeeb2cb8883295654f6 (diff) | |
download | bun-3c1e3792d602703a775b8a3e7031a4299159eff9.tar.gz bun-3c1e3792d602703a775b8a3e7031a4299159eff9.tar.zst bun-3c1e3792d602703a775b8a3e7031a4299159eff9.zip |
Fix #1335
-rw-r--r-- | src/http/websocket_http_client.zig | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/http/websocket_http_client.zig b/src/http/websocket_http_client.zig index 327dfdd21..30ec92462 100644 --- a/src/http/websocket_http_client.zig +++ b/src/http/websocket_http_client.zig @@ -126,8 +126,9 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { body_buf: ?*BodyBuf = null, body_written: usize = 0, websocket_protocol: u64 = 0, - event_loop_ref: bool = false, hostname: [:0]u8 = "", + poll_ref: JSC.PollRef = .{}, + pub const name = if (ssl) "WebSocketHTTPSClient" else "WebSocketHTTPClient"; pub const shim = JSC.Shimmer("Bun", name, @This()); @@ -186,11 +187,9 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { var host_ = host.toSlice(bun.default_allocator); defer host_.deinit(); var vm = global.bunVM(); - vm.us_loop_reference_count +|= 1; - client.event_loop_ref = true; const prev_start_server_on_next_tick = vm.eventLoop().start_server_on_next_tick; vm.eventLoop().start_server_on_next_tick = true; - + client.poll_ref.ref(vm); if (Socket.connect(host_.slice(), port, @ptrCast(*uws.SocketContext, socket_ctx), HTTPClient, client, "tcp")) |out| { if (comptime ssl) { if (!strings.isIPAddress(host_.slice())) { @@ -201,7 +200,6 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { out.tcp.timeout(120); return out; } - vm.us_loop_reference_count -|= 1; vm.eventLoop().start_server_on_next_tick = prev_start_server_on_next_tick; client.clearData(); @@ -214,10 +212,8 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { this.input_body_buf.len = 0; } pub fn clearData(this: *HTTPClient) void { - if (this.event_loop_ref) { - this.event_loop_ref = false; - JSC.VirtualMachine.vm.us_loop_reference_count -|= 1; - } + this.poll_ref.unref(JSC.VirtualMachine.vm); + this.clearInput(); if (this.body_buf) |buf| { this.body_buf = null; |