| ... | @@ -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); |
| 177 | | 177 | |
| 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 | }; | | |
| 196 | | 179 | |
| 197 | const conn = try addr.tcpConnect(); | 180 | const conn = try addr.tcpConnect(); |
| 198 | errdefer conn.close(); | 181 | errdefer conn.close(); |