mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
Avoid using std.net.Address.parse (#5950)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user