aboutsummaryrefslogtreecommitdiff
path: root/src/url.zig
diff options
context:
space:
mode:
authorGravatar Ashcon Partovi <ashcon@partovi.net> 2023-10-17 14:36:56 -0700
committerGravatar Ashcon Partovi <ashcon@partovi.net> 2023-10-17 14:36:56 -0700
commitafab26762043a40f38954868ebdccce85be7f95c (patch)
tree89e27598435d96e3b6777a9c9f7526e1992a89c8 /src/url.zig
parentac36f5c278197026b2a442d8ac0f18da6d77f9a1 (diff)
downloadbun-fix-websocket-upgrade.tar.gz
bun-fix-websocket-upgrade.tar.zst
bun-fix-websocket-upgrade.zip
Fix `Host` header excluding port in WebSocket upgradefix-websocket-upgrade
Diffstat (limited to '')
-rw-r--r--src/url.zig11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/url.zig b/src/url.zig
index 11959636e..90bc002ba 100644
--- a/src/url.zig
+++ b/src/url.zig
@@ -103,7 +103,7 @@ pub const URL = struct {
pub const HostFormatter = struct {
host: string,
- port: string = "",
+ port: ?u16 = null,
is_https: bool = false,
pub fn format(formatter: HostFormatter, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void {
@@ -114,11 +114,10 @@ pub const URL = struct {
try writer.writeAll(formatter.host);
- const is_port_optional = (formatter.is_https and (formatter.port.len == 0 or strings.eqlComptime(formatter.port, "443"))) or
- (!formatter.is_https and (formatter.port.len == 0 or strings.eqlComptime(formatter.port, "80")));
+ const is_port_optional = formatter.port == null or (formatter.is_https and formatter.port == 443) or
+ (!formatter.is_https and formatter.port == 80);
if (!is_port_optional) {
- try writer.writeAll(":");
- try writer.writeAll(formatter.port);
+ try writer.print(":{d}", .{formatter.port.?});
return;
}
}
@@ -126,7 +125,7 @@ pub const URL = struct {
pub fn displayHost(this: *const URL) HostFormatter {
return HostFormatter{
.host = if (this.host.len > 0) this.host else this.displayHostname(),
- .port = this.port,
+ .port = if (this.port.len > 0) this.getPort() else null,
.is_https = this.isHTTPS(),
};
}