From 7dae4db52a403396bbe23ec6299f5a06d50e829b Mon Sep 17 00:00:00 2001 From: Dylan Conway <35280289+dylan-conway@users.noreply.github.com> Date: Tue, 5 Sep 2023 06:12:54 -0700 Subject: fix ipv6 localhost fetch (#4498) * `node` null for localhost getaddrinfo * more test --- src/deps/uws.zig | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/deps/uws.zig b/src/deps/uws.zig index 201544a75..d3228141b 100644 --- a/src/deps/uws.zig +++ b/src/deps/uws.zig @@ -369,8 +369,17 @@ pub fn NewSocketHandler(comptime is_ssl: bool) type { debug("connect({s}, {d})", .{ host, port }); var stack_fallback = std.heap.stackFallback(1024, bun.default_allocator); var allocator = stack_fallback.get(); - var host_ = allocator.dupeZ(u8, host) catch return null; - defer allocator.free(host_); + + var host_: ?[*:0]u8 = brk: { + // getaddrinfo expects `node` to be null if localhost + if (host.len < 6 and (bun.strings.eqlComptime(host, "[::1]") or bun.strings.eqlComptime(host, "[::]"))) { + break :brk null; + } + + break :brk allocator.dupeZ(u8, host) catch return null; + }; + + defer if (host_) |host__| allocator.free(host__[0..host.len]); var socket = us_socket_context_connect(comptime ssl_int, socket_ctx, host_, port, null, 0, @sizeOf(*anyopaque)) orelse return null; const socket_ = ThisSocket{ .socket = socket }; -- cgit v1.2.3