aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-16 20:43:43 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-16 20:43:43 -0700
commit3c1e3792d602703a775b8a3e7031a4299159eff9 (patch)
tree778974affe303fae04c990623b0981f8bc1f96d1
parent603164e66aa015c1bb175eeeb2cb8883295654f6 (diff)
downloadbun-3c1e3792d602703a775b8a3e7031a4299159eff9.tar.gz
bun-3c1e3792d602703a775b8a3e7031a4299159eff9.tar.zst
bun-3c1e3792d602703a775b8a3e7031a4299159eff9.zip
Fix #1335
-rw-r--r--src/http/websocket_http_client.zig14
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;