Avoid using std.net.Address.parse (#5950)

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
Jarred Sumner
2023-09-24 03:17:19 -07:00
committed by GitHub
parent b6a4161cc5
commit 57010cc448
2 changed files with 19 additions and 19 deletions

View File

@@ -1252,7 +1252,7 @@ pub extern fn ares_set_servers_csv(channel: *Channel, servers: [*c]const u8) c_i
pub extern fn ares_set_servers_ports_csv(channel: *Channel, servers: [*c]const u8) c_int;
pub extern fn ares_get_servers(channel: *Channel, servers: *?*struct_ares_addr_port_node) c_int;
pub extern fn ares_get_servers_ports(channel: *Channel, servers: *?*struct_ares_addr_port_node) c_int;
pub extern fn ares_inet_ntop(af: c_int, src: ?*const anyopaque, dst: [*c]u8, size: ares_socklen_t) [*c]const u8;
pub extern fn ares_inet_ntop(af: c_int, src: ?*const anyopaque, dst: [*c]u8, size: ares_socklen_t) ?[*:0]const u8;
pub extern fn ares_inet_pton(af: c_int, src: [*c]const u8, dst: ?*anyopaque) c_int;
pub const ARES_SUCCESS = 0;
pub const ARES_ENODATA = 1;

View File

@@ -4676,30 +4676,30 @@ test "eqlCaseInsensitiveASCII" {
}
pub fn isIPAddress(input: []const u8) bool {
if (containsChar(input, ':'))
return true;
var max_ip_address_buffer: [512]u8 = undefined;
if (input.len > max_ip_address_buffer.len) return false;
if (comptime Environment.isWindows) {
return bun.todo(@src(), false);
}
var sockaddr: std.os.sockaddr = undefined;
@memset(std.mem.asBytes(&sockaddr), 0);
@memcpy(max_ip_address_buffer[0..input.len], input);
max_ip_address_buffer[input.len] = 0;
if (std.net.Address.resolveIp(input, 0)) |_| {
return true;
} else |_| {
return false;
}
var ip_addr_str: [:0]const u8 = max_ip_address_buffer[0.. :0];
return bun.c_ares.ares_inet_pton(std.os.AF.INET, ip_addr_str.ptr, &sockaddr) != 0 or bun.c_ares.ares_inet_pton(std.os.AF.INET6, ip_addr_str.ptr, &sockaddr) != 0;
}
pub fn isIPV6Address(input: []const u8) bool {
if (comptime Environment.isWindows) {
return bun.todo(@src(), false);
}
var max_ip_address_buffer: [512]u8 = undefined;
if (input.len > max_ip_address_buffer.len) return false;
if (std.net.Address.parseIp6(input, 0)) |_| {
return true;
} else |_| {
return false;
}
var sockaddr: std.os.sockaddr = undefined;
@memset(std.mem.asBytes(&sockaddr), 0);
@memcpy(max_ip_address_buffer[0..input.len], input);
max_ip_address_buffer[input.len] = 0;
var ip_addr_str: [:0]const u8 = max_ip_address_buffer[0.. :0];
return bun.c_ares.ares_inet_pton(std.os.AF.INET6, ip_addr_str.ptr, &sockaddr) != 0;
}
pub fn cloneNormalizingSeparators(