1use std::net;
2use std::str::FromStr;
3
4use hickory_client::client::{Client, SyncClient};
5use hickory_client::op::DnsResponse;
6use hickory_client::rr::{DNSClass, Name, RecordType};
7use hickory_client::udp::UdpClientConnection;
8
9use crate::error::Error;
10
11pub fn query(
12 domain: &str,
13 rtype: RecordType,
14 address: net::SocketAddr,
15) -> Result<DnsResponse, Error> {
16 let conn = UdpClientConnection::new(address)?;
17 let client = SyncClient::new(conn);
18
19 let name = Name::from_str(&format!("{}.", domain))?;
20 Ok(client.query(&name, DNSClass::IN, rtype)?)
21}