diff options
| author | 2023-01-10 11:55:42 -0800 | |
|---|---|---|
| committer | 2023-01-10 11:55:42 -0800 | |
| commit | c18165b30fdb7cae91ce22d2a0f80ac2636e8544 (patch) | |
| tree | 6e0c7573cd4357acf1795242680019e095b753fb /src | |
| parent | e18863df1b0f063e01fa06e6c41263066c08df8f (diff) | |
| download | bun-c18165b30fdb7cae91ce22d2a0f80ac2636e8544.tar.gz bun-c18165b30fdb7cae91ce22d2a0f80ac2636e8544.tar.zst bun-c18165b30fdb7cae91ce22d2a0f80ac2636e8544.zip | |
Allow `tls: true` in Bun.connect
Diffstat (limited to 'src')
| -rw-r--r-- | src/bun.js/api/bun/socket.zig | 40 | ||||
| -rw-r--r-- | src/bun.js/api/server.zig | 23 |
2 files changed, 45 insertions, 18 deletions
diff --git a/src/bun.js/api/bun/socket.zig b/src/bun.js/api/bun/socket.zig index ec8426eff..69711c8a3 100644 --- a/src/bun.js/api/bun/socket.zig +++ b/src/bun.js/api/bun/socket.zig @@ -216,7 +216,15 @@ pub const SocketConfig = struct { var ssl: ?JSC.API.ServerConfig.SSLConfig = null; var default_data = JSValue.zero; - if (opts.getTruthy(globalObject, "tls")) |tls| { + if (opts.getTruthy(globalObject, "tls")) |tls| outer: { + if (tls.isBoolean()) { + if (tls.toBoolean()) { + ssl = JSC.API.ServerConfig.SSLConfig.zero; + } + + break :outer; + } + if (JSC.API.ServerConfig.SSLConfig.inJS(globalObject, tls, exception)) |ssl_config| { ssl = ssl_config; } else if (exception.* != null) { @@ -581,6 +589,19 @@ pub const Listener = struct { socket.timeout(120000); } + // pub fn addServerName(this: *Listener, _: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSValue { + + // uws.us_socket_context_add_server_name + // } + + // pub fn removeServerName(this: *Listener, _: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSValue { + // uws.us_socket_context_add_server_name + // } + + // pub fn removeServerName(this: *Listener, _: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSValue { + // uws.us_socket_context_add_server_name + // } + pub fn stop(this: *Listener, _: *JSC.JSGlobalObject, _: *JSC.CallFrame) callconv(.C) JSValue { log("close", .{}); @@ -687,22 +708,7 @@ pub const Listener = struct { handlers.protect(); - var ctx_opts: uws.us_socket_context_options_t = undefined; - @memset(@ptrCast([*]u8, &ctx_opts), 0, @sizeOf(uws.us_socket_context_options_t)); - - if (ssl) |ssl_config| { - if (ssl_config.key_file_name != null) - ctx_opts.key_file_name = ssl_config.key_file_name; - if (ssl_config.cert_file_name != null) - ctx_opts.cert_file_name = ssl_config.cert_file_name; - if (ssl_config.ca_file_name != null) - ctx_opts.ca_file_name = ssl_config.ca_file_name; - if (ssl_config.dh_params_file_name != null) - ctx_opts.dh_params_file_name = ssl_config.dh_params_file_name; - if (ssl_config.passphrase != null) - ctx_opts.passphrase = ssl_config.passphrase; - ctx_opts.ssl_prefer_low_memory_usage = @boolToInt(ssl_config.low_memory_mode); - } + const ctx_opts: uws.us_socket_context_options_t = JSC.API.ServerConfig.SSLConfig.asUSockets(socket_config.ssl); globalObject.bunVM().eventLoop().ensureWaker(); diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig index 153ac5611..f47ee9fc0 100644 --- a/src/bun.js/api/server.zig +++ b/src/bun.js/api/server.zig @@ -121,6 +121,27 @@ pub const ServerConfig = struct { passphrase: [*c]const u8 = null, low_memory_mode: bool = false, + pub fn asUSockets(this_: ?SSLConfig) uws.us_socket_context_options_t { + var ctx_opts: uws.us_socket_context_options_t = undefined; + @memset(@ptrCast([*]u8, &ctx_opts), 0, @sizeOf(uws.us_socket_context_options_t)); + + if (this_) |ssl_config| { + if (ssl_config.key_file_name != null) + ctx_opts.key_file_name = ssl_config.key_file_name; + if (ssl_config.cert_file_name != null) + ctx_opts.cert_file_name = ssl_config.cert_file_name; + if (ssl_config.ca_file_name != null) + ctx_opts.ca_file_name = ssl_config.ca_file_name; + if (ssl_config.dh_params_file_name != null) + ctx_opts.dh_params_file_name = ssl_config.dh_params_file_name; + if (ssl_config.passphrase != null) + ctx_opts.passphrase = ssl_config.passphrase; + ctx_opts.ssl_prefer_low_memory_usage = @boolToInt(ssl_config.low_memory_mode); + } + + return ctx_opts; + } + pub fn deinit(this: *SSLConfig) void { const fields = .{ "server_name", @@ -141,7 +162,7 @@ pub const ServerConfig = struct { } } - const zero = SSLConfig{}; + pub const zero = SSLConfig{}; pub fn inJS(global: *JSC.JSGlobalObject, obj: JSC.JSValue, exception: JSC.C.ExceptionRef) ?SSLConfig { var result = zero; |
