summaryrefslogtreecommitdiff
path: root/crates/arti/src/dns.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/arti/src/dns.rs')
-rw-r--r--crates/arti/src/dns.rs28
1 files changed, 11 insertions, 17 deletions
diff --git a/crates/arti/src/dns.rs b/crates/arti/src/dns.rs
index c8b64cf2f..2c4d9d215 100644
--- a/crates/arti/src/dns.rs
+++ b/crates/arti/src/dns.rs
@@ -6,9 +6,7 @@
use futures::lock::Mutex;
use futures::stream::StreamExt;
-use hickory_proto::op::{
- Message, Query, header::MessageType, op_code::OpCode, response_code::ResponseCode,
-};
+use hickory_proto::op::{Message, OpCode, Query, ResponseCode};
use hickory_proto::rr::{DNSClass, Name, RData, Record, RecordType, rdata};
use hickory_proto::serialize::binary::{BinDecodable, BinEncodable};
use std::collections::HashMap;
@@ -170,13 +168,13 @@ where
U: UdpSocket,
{
// if we can't parse the request, don't try to answer it.
- let mut query = Message::from_bytes(packet)?;
- let id = query.id();
- let queries = query.queries();
+ let query = Message::from_bytes(packet)?;
+ let id = query.metadata.id;
+ let queries = query.queries;
let isolation = DnsIsolationKey(socket_id, addr.ip());
let request_id = {
- let request_id = DnsCacheKey(isolation.clone(), queries.to_vec());
+ let request_id = DnsCacheKey(isolation.clone(), queries.clone());
let response_target = DnsResponseTarget { id, addr, socket };
@@ -197,16 +195,12 @@ where
let mut prefs = StreamPrefs::new();
prefs.set_isolation(isolation);
- let mut response = match do_query(tor_client, queries, &prefs).await {
+ let mut response = match do_query(tor_client, &queries, &prefs).await {
Ok(answers) => {
- let mut response = Message::new();
- response
- .set_message_type(MessageType::Response)
- .set_op_code(OpCode::Query)
- .set_recursion_desired(query.recursion_desired())
- .set_recursion_available(true)
- .add_queries(query.take_queries())
- .add_answers(answers);
+ let mut response = Message::response(id, OpCode::Query);
+ response.metadata.recursion_desired = query.metadata.recursion_desired;
+ response.metadata.recursion_available = true;
+ response.add_queries(queries).add_answers(answers);
// TODO maybe add some edns?
response
}
@@ -221,7 +215,7 @@ where
.unwrap_or_default();
for target in targets {
- response.set_id(target.id);
+ response.metadata.id = target.id;
// ignore errors, we want to reply to everybody
let response = match response.to_bytes() {
Ok(r) => r,