aboutsummaryrefslogtreecommitdiff
path: root/lib/std/net.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/net.zig')
-rw-r--r--lib/std/net.zig12
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,
}