Fixed transfer interruption: it was not possible to abort a transfer if the size of the file was less than 65k

This commit is contained in:
veeso 2021-07-13 16:43:27 +02:00
parent 421969c3da
commit 80c67c8aa8
2 changed files with 21 additions and 8 deletions

View file

@ -48,6 +48,7 @@ Released on FIXME: ??
- Bugfix: - Bugfix:
- Fixed broken input cursor when typing UTF8 characters (tui-realm 0.3.2) - Fixed broken input cursor when typing UTF8 characters (tui-realm 0.3.2)
- Fixed save bookmark dialog: you could switch out from dialog with `<TAB>` - Fixed save bookmark dialog: you could switch out from dialog with `<TAB>`
- Fixed transfer interruption: it was not possible to abort a transfer if the size of the file was less than 65k
- Dependencies: - Dependencies:
- Added `argh 0.1.5` - Added `argh 0.1.5`
- Added `open 1.7.0` - Added `open 1.7.0`

View file

@ -450,16 +450,22 @@ impl FileTransferActivity {
// Write remote file // Write remote file
let mut total_bytes_written: usize = 0; let mut total_bytes_written: usize = 0;
let mut last_progress_val: f64 = 0.0; let mut last_progress_val: f64 = 0.0;
let mut last_input_event_fetch: Instant = Instant::now(); let mut last_input_event_fetch: Option<Instant> = None;
// While the entire file hasn't been completely written, // While the entire file hasn't been completely written,
// Or filetransfer has been aborted // Or filetransfer has been aborted
while total_bytes_written < file_size && !self.transfer.aborted() { while total_bytes_written < file_size && !self.transfer.aborted() {
// Handle input events (each 500ms) // Handle input events (each 500ms) or if never fetched before
if last_input_event_fetch.elapsed().as_millis() >= 500 { if last_input_event_fetch.is_none()
|| last_input_event_fetch
.unwrap_or_else(Instant::now)
.elapsed()
.as_millis()
>= 500
{
// Read events // Read events
self.read_input_event(); self.read_input_event();
// Reset instant // Reset instant
last_input_event_fetch = Instant::now(); last_input_event_fetch = Some(Instant::now());
} }
// Read till you can // Read till you can
let mut buffer: [u8; 65536] = [0; 65536]; let mut buffer: [u8; 65536] = [0; 65536];
@ -790,16 +796,22 @@ impl FileTransferActivity {
self.transfer.partial.init(remote.size); self.transfer.partial.init(remote.size);
// Write local file // Write local file
let mut last_progress_val: f64 = 0.0; let mut last_progress_val: f64 = 0.0;
let mut last_input_event_fetch: Instant = Instant::now(); let mut last_input_event_fetch: Option<Instant> = None;
// While the entire file hasn't been completely read, // While the entire file hasn't been completely read,
// Or filetransfer has been aborted // Or filetransfer has been aborted
while total_bytes_written < remote.size && !self.transfer.aborted() { while total_bytes_written < remote.size && !self.transfer.aborted() {
// Handle input events (each 500 ms) // Handle input events (each 500 ms) or is None
if last_input_event_fetch.elapsed().as_millis() >= 500 { if last_input_event_fetch.is_none()
|| last_input_event_fetch
.unwrap_or_else(Instant::now)
.elapsed()
.as_millis()
>= 500
{
// Read events // Read events
self.read_input_event(); self.read_input_event();
// Reset instant // Reset instant
last_input_event_fetch = Instant::now(); last_input_event_fetch = Some(Instant::now());
} }
// Read till you can // Read till you can
let mut buffer: [u8; 65536] = [0; 65536]; let mut buffer: [u8; 65536] = [0; 65536];