From 419753f45ea4de7b6de090f7ad574f5ccaad5669 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 12 Apr 2024 15:09:35 -0700 Subject: [PATCH] std.http.Client: pass port to server based on user input This makes the host http header have the port if and only if the URI provided by the API user included it. Closes #19624 --- lib/std/http/Client.zig | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/std/http/Client.zig b/lib/std/http/Client.zig index 20d9956cef6d998af5ff931e521ddd32cab7a05c..837bdc63c7f7942388ff5d60ca7c952f1ba2d791 100644 --- a/lib/std/http/Client.zig +++ b/lib/std/http/Client.zig @@ -805,7 +805,7 @@ pub const Request = struct { } req.uri = valid_uri; - req.connection = try req.client.connect(new_host, valid_uri.port.?, protocol); + req.connection = try req.client.connect(new_host, uriPort(valid_uri, protocol), protocol); req.redirect_behavior.subtractOne(); req.response.parser.reset(); @@ -1264,7 +1264,7 @@ fn createProxyFromEnvVar(arena: Allocator, env_var_names: []const []const u8) !? .protocol = protocol, .host = valid_uri.host.?.raw, .authorization = authorization, - .port = valid_uri.port.?, + .port = uriPort(valid_uri, protocol), .supports_connect = true, }; return proxy; @@ -1582,11 +1582,14 @@ fn validateUri(uri: Uri, arena: Allocator) !struct { Connection.Protocol, Uri } valid_uri.host = .{ .raw = try (uri.host orelse return error.UriMissingHost).toRawMaybeAlloc(arena), }; - valid_uri.port = uri.port orelse switch (protocol) { + return .{ protocol, valid_uri }; +} + +fn uriPort(uri: Uri, protocol: Connection.Protocol) u16 { + return uri.port orelse switch (protocol) { .plain => 80, .tls => 443, }; - return .{ protocol, valid_uri }; } /// Open a connection to the host specified by `uri` and prepare to send a HTTP request. @@ -1634,7 +1637,7 @@ pub fn open( } const conn = options.connection orelse - try client.connect(valid_uri.host.?.raw, valid_uri.port.?, protocol); + try client.connect(valid_uri.host.?.raw, uriPort(valid_uri, protocol), protocol); var req: Request = .{ .uri = valid_uri, -- 2.54.0