Add better error handling and messages
This commit is contained in:
parent
81fc120235
commit
66f479e8bc
5 changed files with 23 additions and 11 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
|
@ -4,4 +4,4 @@ version = 3
|
|||
|
||||
[[package]]
|
||||
name = "tftpd"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "tftpd"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
authors = ["Altuğ Bakan <mail@alt.ug>"]
|
||||
edition = "2021"
|
||||
description = "Multithreaded TFTP server daemon"
|
||||
|
|
|
|||
|
|
@ -333,8 +333,14 @@ fn parse_ack(buf: &[u8]) -> Result<Packet, Box<dyn Error>> {
|
|||
|
||||
fn parse_error(buf: &[u8]) -> Result<Packet, Box<dyn Error>> {
|
||||
let code = ErrorCode::from_u16(Convert::to_u16(&buf[2..])?)?;
|
||||
let (msg, _) = Convert::to_string(buf, 4)?;
|
||||
if let Ok((msg, _)) = Convert::to_string(buf, 4) {
|
||||
Ok(Packet::Error { code, msg })
|
||||
} else {
|
||||
Ok(Packet::Error {
|
||||
code,
|
||||
msg: "(no message)".to_string(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fn serialize_data(block_num: &u16, data: &Vec<u8>) -> Vec<u8> {
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ impl Server {
|
|||
} => {
|
||||
println!("Sending {filename} to {from}");
|
||||
if let Err(err) = self.handle_rrq(filename.clone(), &mut options, &from) {
|
||||
eprintln!("{err}")
|
||||
eprintln!("Error while sending file: {err}")
|
||||
}
|
||||
}
|
||||
Packet::Wrq {
|
||||
|
|
@ -59,7 +59,7 @@ impl Server {
|
|||
} => {
|
||||
println!("Receiving {filename} from {from}");
|
||||
if let Err(err) = self.handle_wrq(filename.clone(), &mut options, &from) {
|
||||
eprintln!("{err}")
|
||||
eprintln!("Error while receiving file: {err}")
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
|
|
@ -69,7 +69,7 @@ impl Server {
|
|||
ErrorCode::IllegalOperation,
|
||||
"invalid request".to_string(),
|
||||
)
|
||||
.unwrap_or_else(|err| eprintln!("{err}"));
|
||||
.unwrap_or_else(|_| eprintln!("Received invalid request"));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
use std::{
|
||||
error::Error,
|
||||
fs::File,
|
||||
fs::{self, File},
|
||||
io::{Read, Write},
|
||||
net::{SocketAddr, UdpSocket},
|
||||
path::{Path, PathBuf},
|
||||
|
|
@ -95,6 +95,12 @@ impl Worker {
|
|||
|
||||
if let Err(err) = handle_receive() {
|
||||
eprintln!("{err}");
|
||||
if fs::remove_file(&file_path).is_err() {
|
||||
eprintln!(
|
||||
"Error while cleaning {}",
|
||||
file_path.file_name().unwrap().to_str().unwrap()
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -143,7 +149,7 @@ fn send_file(
|
|||
|
||||
println!(
|
||||
"Sent {} to {}",
|
||||
file_path.display(),
|
||||
file_path.file_name().unwrap().to_str().unwrap(),
|
||||
socket.peer_addr().unwrap()
|
||||
);
|
||||
Ok(())
|
||||
|
|
@ -198,7 +204,7 @@ fn receive_file(
|
|||
|
||||
println!(
|
||||
"Received {} from {}",
|
||||
file_path.display(),
|
||||
file_path.file_name().unwrap().to_str().unwrap(),
|
||||
socket.peer_addr().unwrap()
|
||||
);
|
||||
Ok(())
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue