summaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/arti/Cargo.toml2
-rw-r--r--crates/arti/src/dns.rs28
2 files changed, 12 insertions, 18 deletions
diff --git a/crates/arti/Cargo.toml b/crates/arti/Cargo.toml
index 888d3cefb..2bc40ee78 100644
--- a/crates/arti/Cargo.toml
+++ b/crates/arti/Cargo.toml
@@ -176,7 +176,7 @@ derive_builder = { version = "0.11", package = "derive_builder_fork_arti" }
fs-mistrust = { path = "../fs-mistrust", version = "0.14.0" }
futures = "0.3.14"
futures-copy = { version = "0.3.0", path = "../futures-copy" }
-hickory-proto = { version = "0.25.2", optional = true }
+hickory-proto = { version = "0.26.1", optional = true }
http = { version = "1.3.1", optional = true }
humantime = "2"
humantime-serde = "1.1.1"
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,