aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-17 15:38:36 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-17 15:38:36 -0700
commitb595ddf20dee4710f0b4c4b46cd117bcb78e7af6 (patch)
treeb534ab8df69c3a396afd66927654f2eeed276f21 /src
parent4bd9b20c8a45f08ac8169e782028d26282d54829 (diff)
downloadbun-b595ddf20dee4710f0b4c4b46cd117bcb78e7af6.tar.gz
bun-b595ddf20dee4710f0b4c4b46cd117bcb78e7af6.tar.zst
bun-b595ddf20dee4710f0b4c4b46cd117bcb78e7af6.zip
Fix error handler
Diffstat (limited to 'src')
-rw-r--r--src/bun.js/api/server.zig11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig
index 0cb5d4cd1..0adaf8b3b 100644
--- a/src/bun.js/api/server.zig
+++ b/src/bun.js/api/server.zig
@@ -3644,13 +3644,11 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type {
if (upgrader.aborted) {
return JSC.jsBoolean(false);
}
- request.upgrader = null;
+
if (upgrader.upgrade_context == null or @ptrToInt(upgrader.upgrade_context) == std.math.maxInt(usize)) {
return JSC.jsBoolean(false);
}
var ctx = upgrader.upgrade_context.?;
- // obviously invalid pointer marks it as used
- upgrader.upgrade_context = @intToPtr(*uws.uws_socket_context_s, std.math.maxInt(usize));
var sec_websocket_key_str = ZigString.Empty;
@@ -3736,6 +3734,13 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type {
}
}
+ // --- After this point, do not throw an exception
+ // See https://github.com/oven-sh/bun/issues/1339
+
+ // obviously invalid pointer marks it as used
+ upgrader.upgrade_context = @intToPtr(*uws.uws_socket_context_s, std.math.maxInt(usize));
+ request.upgrader = null;
+
upgrader.resp.clearAborted();
var ws = this.vm.allocator.create(ServerWebSocket) catch return .zero;
ws.* = .{