diff options
author | 2022-10-17 15:38:36 -0700 | |
---|---|---|
committer | 2022-10-17 15:38:36 -0700 | |
commit | b595ddf20dee4710f0b4c4b46cd117bcb78e7af6 (patch) | |
tree | b534ab8df69c3a396afd66927654f2eeed276f21 /src | |
parent | 4bd9b20c8a45f08ac8169e782028d26282d54829 (diff) | |
download | bun-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.zig | 11 |
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.* = .{ |