summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2024-07-23 11:27:50 +0200
committerPaul Holzinger <pholzing@redhat.com>2024-07-23 12:19:45 +0200
commit96784c3d44c18f7f6f80efc0b6f189a81bb0d83b (patch)
treed1e913b194018b8ca87debbccbe270833850c142
parent6039c8feac30d25b42baea9c54013d5d0e9fff52 (diff)
coredns: do not clone sender
We can use a mutable reference here. And there is no need to clone the nameservers as well. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
-rw-r--r--src/dns/coredns.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/dns/coredns.rs b/src/dns/coredns.rs
index 67aa26e..6a8dd00 100644
--- a/src/dns/coredns.rs
+++ b/src/dns/coredns.rs
@@ -134,7 +134,7 @@ impl CoreDns {
let backend = self.backend.load();
let src_address = msg.addr();
let mut dns_resolver = self.resolv_conf.clone();
- let sender = sender_original.with_remote_addr(src_address);
+ let mut sender = sender_original.with_remote_addr(src_address);
let (request_name, record_type, mut req) = match parse_dns_msg(msg) {
Some((name, record_type, req)) => (name, record_type, req),
_ => {
@@ -183,7 +183,7 @@ impl CoreDns {
if record_type == RecordType::PTR {
if let Some(msg) = reply_ptr(&request_name_string, &backend, src_address, &req)
{
- reply(sender, src_address, &msg);
+ reply(&mut sender, src_address, &msg);
return;
}
}
@@ -237,7 +237,7 @@ impl CoreDns {
}
}
}
- reply(sender, src_address, &req);
+ reply(&mut sender, src_address, &req);
} else {
debug!(
"Not found, forwarding dns request for {:?}",
@@ -250,12 +250,11 @@ impl CoreDns {
{
let mut nx_message = req.clone();
nx_message.set_response_code(ResponseCode::NXDomain);
- reply(sender.clone(), src_address, &nx_message);
+ reply(&mut sender, src_address, &nx_message);
} else {
- let nameservers = dns_resolver.nameservers.clone();
tokio::spawn(async move {
// forward dns request to hosts's /etc/resolv.conf
- for nameserver in nameservers {
+ for nameserver in &dns_resolver.nameservers {
let connection = UdpClientStream::<UdpSocket>::new(
SocketAddr::new(nameserver.into(), 53),
);
@@ -264,7 +263,7 @@ impl CoreDns {
{
tokio::spawn(req_sender);
if let Some(resp) = forward_dns_req(cl, req.clone()).await {
- if reply(sender.clone(), src_address, &resp).is_some() {
+ if reply(&mut sender, src_address, &resp).is_some() {
// request resolved from following resolver so
// break and don't try other resolvers
break;
@@ -282,7 +281,7 @@ impl CoreDns {
}
}
-fn reply(mut sender: BufDnsStreamHandle, socket_addr: SocketAddr, msg: &Message) -> Option<()> {
+fn reply(sender: &mut BufDnsStreamHandle, socket_addr: SocketAddr, msg: &Message) -> Option<()> {
let id = msg.id();
let mut msg_mut = msg.clone();
msg_mut.set_message_type(MessageType::Response);