aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-17 03:33:37 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-17 03:33:37 -0700
commitabbde39a02a57166da0c43663bae85d78823a5f1 (patch)
tree91b28e1121acc1afd6b422702e9127b7b6d02030 /src/bun.js
parente1a17aff4c1b8a10c243a7e9a0e990380f42f615 (diff)
downloadbun-abbde39a02a57166da0c43663bae85d78823a5f1.tar.gz
bun-abbde39a02a57166da0c43663bae85d78823a5f1.tar.zst
bun-abbde39a02a57166da0c43663bae85d78823a5f1.zip
Clean up some code
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/api/server.zig62
-rw-r--r--src/bun.js/bindings/generated_classes.zig7
2 files changed, 35 insertions, 34 deletions
diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig
index ea4625f73..b4a351089 100644
--- a/src/bun.js/api/server.zig
+++ b/src/bun.js/api/server.zig
@@ -3300,15 +3300,16 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type {
}
var data_value = JSC.JSValue.zero;
+
+ // if we converted a HeadersInit to a Headers object, we need to free it
var fetch_headers_to_deref: ?*JSC.FetchHeaders = null;
+
defer {
if (fetch_headers_to_deref) |fh| {
fh.deref();
}
}
-
-
if (optional) |opts| {
getter: {
if (opts.isEmptyOrUndefinedOrNull()) {
@@ -3320,47 +3321,40 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type {
return JSValue.jsUndefined();
}
- if (opts.fastGet(globalThis, .headers)) |headers_value| {
- if (headers_value.as(JSC.FetchHeaders)) |fetch_headers| {
- if (fetch_headers.fastGet(.SecWebSocketProtocol)) |protocol| {
- sec_websocket_protocol = protocol;
- }
-
- if (fetch_headers.fastGet(.SecWebSocketExtensions)) |protocol| {
- sec_websocket_extensions = protocol;
- }
-
- // we must write the status first so that 200 OK isn't written
- upgrader.resp.writeStatus("101 Switching Protocols");
+ if (opts.fastGet(globalThis, .data)) |headers_value| {
+ data_value = headers_value;
+ }
- fetch_headers.toUWSResponse(comptime ssl_enabled, upgrader.resp);
+ if (opts.fastGet(globalThis, .headers)) |headers_value| {
+ if (headers_value.isEmptyOrUndefinedOrNull()) {
break :getter;
- } else if (headers_value.isObject()) {
- if (JSC.FetchHeaders.createFromJS(globalThis, headers_value)) |fetch_headers| {
- if (fetch_headers.fastGet(.SecWebSocketProtocol)) |protocol| {
- sec_websocket_protocol = protocol;
- }
+ }
- if (fetch_headers.fastGet(.SecWebSocketExtensions)) |protocol| {
- sec_websocket_extensions = protocol;
+ var fetch_headers_to_use: *JSC.FetchHeaders = headers_value.as(JSC.FetchHeaders) orelse brk: {
+ if (headers_value.isObject()) {
+ if (JSC.FetchHeaders.createFromJS(globalThis, headers_value)) |fetch_headers| {
+ fetch_headers_to_deref = fetch_headers;
+ break :brk fetch_headers;
}
-
- // we must write the status first so that 200 OK isn't written
- upgrader.resp.writeStatus("101 Switching Protocols");
-
- fetch_headers.toUWSResponse(comptime ssl_enabled, upgrader.resp);
- fetch_headers_to_deref = fetch_headers;
}
+ break :brk null;
+ } orelse {
+ JSC.throwInvalidArguments("upgrade options.headers must be a Headers or an object", .{}, globalThis, exception);
+ return JSValue.jsUndefined();
+ };
- break :getter;
+ if (fetch_headers_to_use.fastGet(.SecWebSocketProtocol)) |protocol| {
+ sec_websocket_protocol = protocol;
}
- JSC.throwInvalidArguments("upgrade options.headers must be a Headers or an object", .{}, globalThis, exception);
- return JSValue.jsUndefined();
- }
+ if (fetch_headers_to_use.fastGet(.SecWebSocketExtensions)) |protocol| {
+ sec_websocket_extensions = protocol;
+ }
- if (opts.fastGet(globalThis, .data)) |headers_value| {
- data_value = headers_value;
+ // TODO: should we cork?
+ // we must write the status first so that 200 OK isn't written
+ upgrader.resp.writeStatus("101 Switching Protocols");
+ fetch_headers_to_use.toUWSResponse(comptime ssl_enabled, upgrader.resp);
}
}
}
diff --git a/src/bun.js/bindings/generated_classes.zig b/src/bun.js/bindings/generated_classes.zig
index 7c954c0c1..6649881ac 100644
--- a/src/bun.js/bindings/generated_classes.zig
+++ b/src/bun.js/bindings/generated_classes.zig
@@ -820,6 +820,11 @@ pub const JSServerWebSocket = struct {
@compileLog("ServerWebSocket.finalize is not a finalizer");
}
+ if (@TypeOf(ServerWebSocket.getBinaryType) != GetterType)
+ @compileLog("Expected ServerWebSocket.getBinaryType to be a getter");
+
+ if (@TypeOf(ServerWebSocket.setBinaryType) != SetterType)
+ @compileLog("Expected ServerWebSocket.setBinaryType to be a setter");
if (@TypeOf(ServerWebSocket.close) != CallbackType)
@compileLog("Expected ServerWebSocket.close to be a callback");
if (@TypeOf(ServerWebSocket.cork) != CallbackType)
@@ -852,6 +857,7 @@ pub const JSServerWebSocket = struct {
@export(ServerWebSocket.constructor, .{ .name = "ServerWebSocketClass__construct" });
@export(ServerWebSocket.cork, .{ .name = "ServerWebSocketPrototype__cork" });
@export(ServerWebSocket.finalize, .{ .name = "ServerWebSocketClass__finalize" });
+ @export(ServerWebSocket.getBinaryType, .{ .name = "ServerWebSocketPrototype__getBinaryType" });
@export(ServerWebSocket.getBufferedAmount, .{ .name = "ServerWebSocketPrototype__getBufferedAmount" });
@export(ServerWebSocket.getData, .{ .name = "ServerWebSocketPrototype__getData" });
@export(ServerWebSocket.getReadyState, .{ .name = "ServerWebSocketPrototype__getReadyState" });
@@ -859,6 +865,7 @@ pub const JSServerWebSocket = struct {
@export(ServerWebSocket.isSubscribed, .{ .name = "ServerWebSocketPrototype__isSubscribed" });
@export(ServerWebSocket.publish, .{ .name = "ServerWebSocketPrototype__publish" });
@export(ServerWebSocket.send, .{ .name = "ServerWebSocketPrototype__send" });
+ @export(ServerWebSocket.setBinaryType, .{ .name = "ServerWebSocketPrototype__setBinaryType" });
@export(ServerWebSocket.setData, .{ .name = "ServerWebSocketPrototype__setData" });
@export(ServerWebSocket.subscribe, .{ .name = "ServerWebSocketPrototype__subscribe" });
@export(ServerWebSocket.unsubscribe, .{ .name = "ServerWebSocketPrototype__unsubscribe" });