🐛 bug: fix constructing errors and forgetting to actually throw the errors
parent
200c07da2f
commit
5e7f691a60
|
@ -2,6 +2,7 @@ use std::{
|
|||
sync::Arc,
|
||||
};
|
||||
|
||||
use anyhow::bail;
|
||||
use tokio::{
|
||||
io::{
|
||||
AsyncReadExt,
|
||||
|
@ -26,27 +27,27 @@ pub async fn rx (
|
|||
let mut tag = [0u8, 0, 0, 0];
|
||||
let bytes_read = tcp_read.read (&mut tag).await?;
|
||||
if bytes_read != 4 {
|
||||
anyhow::anyhow! ("loops::rx: Couldn't read 4 bytes for tag");
|
||||
bail! ("loops::rx: Couldn't read 4 bytes for tag");
|
||||
}
|
||||
if tag != [1, 0, 0, 0] {
|
||||
anyhow::anyhow! ("loops::rx: unexpected tag in framing");
|
||||
bail! ("loops::rx: unexpected tag in framing");
|
||||
}
|
||||
|
||||
let mut length = [0u8, 0, 0, 0];
|
||||
let bytes_read = tcp_read.read (&mut length).await?;
|
||||
if bytes_read != 4 {
|
||||
anyhow::anyhow! ("loops::rx: Couldn't read 4 bytes for tag");
|
||||
bail! ("loops::rx: Couldn't read 4 bytes for tag");
|
||||
}
|
||||
|
||||
let length = usize::try_from (u32::from_le_bytes (length))?;
|
||||
if length >= 8_192 {
|
||||
anyhow::anyhow! ("loops::rx: Length too big for UDP packets");
|
||||
bail! ("loops::rx: Length too big for UDP packets");
|
||||
}
|
||||
|
||||
let mut buf = vec! [0u8; length];
|
||||
let bytes_read = tcp_read.read_exact (&mut buf).await?;
|
||||
if length != bytes_read {
|
||||
anyhow::anyhow! ("loops::rx: read_exact failed");
|
||||
bail! ("loops::rx: read_exact failed");
|
||||
}
|
||||
buf.truncate (bytes_read);
|
||||
|
||||
|
|
Loading…
Reference in New Issue