diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-10-29 14:03:39 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-10-29 14:03:39 -0400 |
| commit | 9ade31faaf74f5fc4291df17749ade508e53f734 (patch) | |
| tree | 6f472736749cf12bc4622768584a51c14fbc0fe1 /lib/std/net.zig | |
| parent | 67058b9b7089446e16eee3c03ab3f8f9a5d13529 (diff) | |
| download | zig-9ade31faaf74f5fc4291df17749ade508e53f734.tar.gz zig-9ade31faaf74f5fc4291df17749ade508e53f734.zip | |
implement CNAME expansion
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, } |
