feat: use cursors instead of byte arrays

This commit is contained in:
2026-07-04 23:20:16 +02:00
parent b0e230d4d8
commit dee178ebc2
9 changed files with 136 additions and 99 deletions
+6 -4
View File
@@ -1,9 +1,10 @@
mod config;
mod dns;
mod ext;
mod logging;
mod macros;
use std::net::SocketAddr;
use std::{io::Cursor, net::SocketAddr};
use anyhow::Result;
use dotenv::dotenv;
@@ -24,7 +25,8 @@ async fn main() -> Result<()> {
loop {
let (size, addr) = sock.recv_from(&mut buffer).await?;
let result = handle_datagram(&config, &sock, &addr, &buffer[..size]).await;
let mut cursor = Cursor::new(&buffer[..size]);
let result = handle_datagram(&config, &sock, &addr, &mut cursor).await;
if let Err(err) = result {
tracing::error!("failed to handle datagram: {err}");
}
@@ -35,9 +37,9 @@ async fn handle_datagram(
config: &config::ConfigData,
sock: &UdpSocket,
addr: &SocketAddr,
datagram: &[u8],
cursor: &mut Cursor<&[u8]>,
) -> Result<()> {
let message = Message::parse(datagram)?;
let message = Message::parse(cursor)?;
let span = tracing::span!(
Level::INFO,
"handle_datagram",