diff options
Diffstat (limited to 'lib/std/net.zig')
| -rw-r--r-- | lib/std/net.zig | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/std/net.zig b/lib/std/net.zig index 2ca0e1fc26..ada99f3661 100644 --- a/lib/std/net.zig +++ b/lib/std/net.zig @@ -1017,7 +1017,6 @@ fn dnsParse( } fn dnsParseCallback(ctx: dpc_ctx, rr: u8, data: []const u8, packet: []const u8) !void { - var tmp: [256]u8 = undefined; switch (rr) { os.RR_A => { if (data.len != 4) return error.InvalidDnsARecord; @@ -1038,10 +1037,13 @@ fn dnsParseCallback(ctx: dpc_ctx, rr: u8, data: []const u8, packet: []const u8) mem.copy(u8, &new_addr.addr, data); }, os.RR_CNAME => { - @panic("TODO dn_expand"); - //if (__dn_expand(packet, (const unsigned char *)packet + 512, - // data, tmp, sizeof tmp) > 0 && is_valid_hostname(tmp)) - // strcpy(ctx->canon, tmp); + var tmp: [256]u8 = undefined; + // Returns len of compressed name. strlen to get canon name. + _ = try os.dn_expand(packet, data, &tmp); + const canon_name = mem.toSliceConst(u8, &tmp); + if (isValidHostName(canon_name)) { + try ctx.canon.replaceContents(canon_name); + } }, else => return, } |
