diff options
author | Craig Morten <cmorten@users.noreply.github.com> | 2022-05-15 15:43:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-15 16:43:08 +0200 |
commit | 38e0a2ec1b05ef23fe34f9b4ea8ccc16536266ce (patch) | |
tree | 928f580c708620112f57f30b57cc18b59e1bab74 | |
parent | f5c31b56e3fb57a92dbaaec17690bfa9d787164e (diff) |
feat(ext/net): support full `SOA` record interface (#14617)
-rw-r--r-- | cli/dts/lib.deno.ns.d.ts | 7 | ||||
-rw-r--r-- | cli/tests/testdata/resolve_dns.ts.out | 2 | ||||
-rw-r--r-- | ext/net/ops.rs | 17 |
3 files changed, 23 insertions, 3 deletions
diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/dts/lib.deno.ns.d.ts index f7dc778c3..8ed0ab83e 100644 --- a/cli/dts/lib.deno.ns.d.ts +++ b/cli/dts/lib.deno.ns.d.ts @@ -2983,6 +2983,11 @@ declare namespace Deno { export interface SOARecord { mname: string; rname: string; + serial: number; + refresh: number; + retry: number; + expire: number; + minimum: number; } /** If `resolveDns` is called with "SRV" record type specified, it will return an array of this interface. */ @@ -3044,5 +3049,5 @@ declare namespace Deno { query: string, recordType: RecordType, options?: ResolveDnsOptions, - ): Promise<string[] | MXRecord[] | SRVRecord[] | string[][]>; + ): Promise<string[] | MXRecord[] | SOARecord[] | SRVRecord[] | string[][]>; } diff --git a/cli/tests/testdata/resolve_dns.ts.out b/cli/tests/testdata/resolve_dns.ts.out index 487b55546..2a6de755c 100644 --- a/cli/tests/testdata/resolve_dns.ts.out +++ b/cli/tests/testdata/resolve_dns.ts.out @@ -13,7 +13,7 @@ NS PTR ["www.example.com.","alias.example.com."] SOA -[{"mname":"net.example.com.","rname":"admin\\.domain.example.com."}] +[{"mname":"net.example.com.","rname":"admin\\.domain.example.com.","serial":20,"refresh":7200,"retry":600,"expire":3600000,"minimum":60}] SRV [{"priority":0,"weight":100,"port":1234,"target":"srv.example.com."}] TXT diff --git a/ext/net/ops.rs b/ext/net/ops.rs index 2478d0984..83df7b626 100644 --- a/ext/net/ops.rs +++ b/ext/net/ops.rs @@ -584,6 +584,11 @@ pub enum DnsReturnRecord { Soa { mname: String, rname: String, + serial: u32, + refresh: i32, + retry: i32, + expire: i32, + minimum: u32, }, Srv { priority: u16, @@ -743,6 +748,11 @@ fn rdata_to_return_record( SOA => r.as_soa().map(|soa| DnsReturnRecord::Soa { mname: soa.mname().to_string(), rname: soa.rname().to_string(), + serial: soa.serial(), + refresh: soa.refresh(), + retry: soa.retry(), + expire: soa.expire(), + minimum: soa.minimum(), }), SRV => r.as_srv().map(|srv| DnsReturnRecord::Srv { priority: srv.priority(), @@ -858,7 +868,12 @@ mod tests { func(&rdata), Some(DnsReturnRecord::Soa { mname: "".to_string(), - rname: "".to_string() + rname: "".to_string(), + serial: 0, + refresh: i32::MAX, + retry: i32::MAX, + expire: i32::MAX, + minimum: 0, }) ); } |