@@ -110,6 +110,37 @@ let test_etc_hosts_priority server config () =
110110 in
111111 run ~pcap: " test_etc_hosts_priority.pcap" t
112112
113+ let test_noerror_empty_response server config () =
114+ let name = " ipv4.tlund.se" in (* FIXME: Use a better address? *)
115+ let t _ stack =
116+ set_dns_policy config;
117+ let resolver = DNS. create stack.Client. t in
118+ (* Query for an AAAA record on a domain that might only have A records *)
119+ DNS. gethostbyname ~server ~q_type: Dns.Packet. Q_AAAA resolver name >> = function
120+ | [] -> (* Expected: NOERROR with an empty answer list *)
121+ Log. info (fun f -> f " %s returned NOERROR with no AAAA records" name);
122+ Lwt. return ()
123+ | _ ->
124+ Log. err (fun f -> f " Expected no AAAA records for %s, but got some" name);
125+ failwith (" Expected NOERROR with no AAAA records for " ^ name)
126+ in
127+ run ~pcap: " test_noerror_empty_response.pcap" t
128+
129+ let test_nxdomain_response server config () =
130+ let name = " nonexistent.example.com" in (* Use a domain that doesn’t exist *)
131+ let t _ stack =
132+ set_dns_policy config;
133+ let resolver = DNS. create stack.Client. t in
134+ DNS. gethostbyname ~server resolver name >> = function
135+ | [] -> (* Expected: NXDOMAIN (empty answer list) *)
136+ Log. info (fun f -> f " %s returned NXDOMAIN as expected" name);
137+ Lwt. return ()
138+ | _ ->
139+ Log. err (fun f -> f " Expected NXDOMAIN for %s, but got answers" name);
140+ failwith (" Expected NXDOMAIN for " ^ name)
141+ in
142+ run ~pcap: " test_nxdomain_response.pcap" t
143+
113144let test_dns config =
114145 let prefix = Dns_policy. (Config. to_string @@ config () ) in [
115146 prefix ^ " : lookup " ,
@@ -123,6 +154,12 @@ let test_dns config =
123154
124155 prefix ^ " : _etc_hosts_priority" ,
125156 [ " " , `Quick , test_etc_hosts_priority primary_dns_ip config ];
157+
158+ prefix ^ " : noerror_empty_response" ,
159+ [ " " , `Quick , test_noerror_empty_response primary_dns_ip config ];
160+
161+ prefix ^ " : nxdomain_response" ,
162+ [ " " , `Quick , test_nxdomain_response primary_dns_ip config ];
126163 ]
127164
128165(* A real UDP server listening on a physical port *)
0 commit comments