diff options
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/arti/Cargo.toml | 2 | ||||
| -rw-r--r-- | crates/arti/src/dns.rs | 28 |
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, |
