From 150d6635b5ed86ecdd517942cb09be444a1b132e Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Sun, 3 Mar 2019 14:48:55 +0100 Subject: Make requested blksize configurable --- README | 1 + src/tftpc.rs | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README b/README index 318917b..97b7f70 100644 --- a/README +++ b/README @@ -26,6 +26,7 @@ Client: -h, --help display usage information -g, --get FILE download file from remote server -p, --put FILE upload file to remote server + -b, --blksize SIZE negotiate a different block size (default: 1428) Server: diff --git a/src/tftpc.rs b/src/tftpc.rs index 294475c..a006962 100644 --- a/src/tftpc.rs +++ b/src/tftpc.rs @@ -24,6 +24,7 @@ struct Configuration { mode: Mode, filename: PathBuf, remote: SocketAddr, + blksize: usize, } struct Tftpc { @@ -91,7 +92,7 @@ impl Tftpc { } fn append_option_req(&self, buf: &mut Vec, fsize: u64) { - self.tftp.append_option(buf, "blksize", &format!("{}", 1428)); + self.tftp.append_option(buf, "blksize", &format!("{}", self.conf.blksize)); self.tftp.append_option(buf, "timeout", &format!("{}", 3)); self.tftp.append_option(buf, "tsize", &format!("{}", fsize)); } @@ -230,11 +231,13 @@ fn parse_commandline<'a>(args: &'a Vec) -> Result m, Err(err) => { @@ -281,10 +284,19 @@ fn parse_commandline<'a>(args: &'a Vec) -> Result("b", blksize) { + Ok(b) => b, + Err(err) => { + usage(opts, program, Some(err.to_string())); + return Err("blksize"); + } + }; + Ok(Configuration{ mode: mode.unwrap(), filename: filename.unwrap(), remote: remote.unwrap(), + blksize: blksize, }) } -- cgit v1.2.3