aboutsummaryrefslogtreecommitdiff
path: root/src/string_immutable.zig
diff options
context:
space:
mode:
authorGravatar Dylan Conway <dylan.conway567@gmail.com> 2023-10-17 14:10:25 -0700
committerGravatar Dylan Conway <dylan.conway567@gmail.com> 2023-10-17 14:10:25 -0700
commit7458b969c5d9971e89d187b687e1924e78da427e (patch)
treeee3dbf95c728cf407bf49a27826b541e9264a8bd /src/string_immutable.zig
parentd4a2c29131ec154f5e4db897d4deedab2002cbc4 (diff)
parente91436e5248d947b50f90b4a7402690be8a41f39 (diff)
downloadbun-7458b969c5d9971e89d187b687e1924e78da427e.tar.gz
bun-7458b969c5d9971e89d187b687e1924e78da427e.tar.zst
bun-7458b969c5d9971e89d187b687e1924e78da427e.zip
Merge branch 'main' into postinstall_3
Diffstat (limited to 'src/string_immutable.zig')
-rw-r--r--src/string_immutable.zig36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig
index 03ba35e66..00ee8d835 100644
--- a/src/string_immutable.zig
+++ b/src/string_immutable.zig
@@ -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..input.len :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..input.len :0];
+ return bun.c_ares.ares_inet_pton(std.os.AF.INET6, ip_addr_str.ptr, &sockaddr) != 0;
}
pub fn cloneNormalizingSeparators(