authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-10 02:02:17 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-10 02:02:17 -07:00
log37451667ffbe5833046c5e6166bb0da4dc3df7dc
treec574f846357c09f11ea6e05bf3660eacdce49684
parent8bf4145d23086aebce60d6dff50ca66509645a39
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

use net.Address.fromUrl


1 files changed, 1 insertions(+), 18 deletions(-)

http.zig+1-18
...@@ -175,24 +175,7 @@ pub fn open(allocator: std.mem.Allocator, method: Method, input: []const u8) !Cl...@@ -175,24 +175,7 @@ pub fn open(allocator: std.mem.Allocator, method: Method, input: []const u8) !Cl
175 const u = try url.URL.parse(allocator, input, null);175 const u = try url.URL.parse(allocator, input, null);
176 defer allocator.free(u.href);176 defer allocator.free(u.href);
177177
178 const addr: net.Address = switch (u.hostFancy()) {178 const addr: net.Address = .fromUrl(&u, allocator);
179 .unset => unreachable,
180 .ipv4 => |int| .initIp4(@bitCast(int), u.portFancy().?),
181 .ipv6 => |int| .initIp6(@bitCast(int), u.portFancy().?),
182 .name => |hostname| blk: {
183 const hostnamez = try allocator.dupeZ(u8, hostname);
184 defer allocator.free(hostnamez);
185 const portz = try std.fmt.allocPrintZ(allocator, "{d}", .{u.portFancy().?});
186 defer allocator.free(portz);
187 const gai = try net.getaddrinfo(hostnamez, portz, null);
188 defer net.freeaddrinfo(gai);
189 break :blk switch (gai.addr.?.family) {
190 .INET => .{ .in = .{ .sa = @as(*net.Ip4Address.SockAddr, @ptrCast(@alignCast(gai.addr.?))).* } },
191 .INET6 => .{ .in6 = .{ .sa = @as(*net.Ip6Address.SockAddr, @ptrCast(@alignCast(gai.addr.?))).* } },
192 else => @panic("TODO"),
193 };
194 },
195 };
196179
197 const conn = try addr.tcpConnect();180 const conn = try addr.tcpConnect();
198 errdefer conn.close();181 errdefer conn.close();