diff options
author | Paul Holzinger <pholzing@redhat.com> | 2024-07-23 11:27:50 +0200 |
---|---|---|
committer | Paul Holzinger <pholzing@redhat.com> | 2024-07-23 12:19:45 +0200 |
commit | 96784c3d44c18f7f6f80efc0b6f189a81bb0d83b (patch) | |
tree | d1e913b194018b8ca87debbccbe270833850c142 | |
parent | 6039c8feac30d25b42baea9c54013d5d0e9fff52 (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.rs | 15 |
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); |