fix: infinite execution loop when transfer data

This commit is contained in:
Kingtous
2022-12-06 12:11:26 +08:00
parent 723a3dfb7b
commit c77fe6c01c
4 changed files with 45 additions and 7 deletions

View File

@@ -75,6 +75,11 @@ pub enum FS {
id: i32,
file_num: i32,
},
WriteError {
id: i32,
file_num: i32,
err: String
},
WriteOffset {
id: i32,
file_num: i32,

View File

@@ -1304,6 +1304,13 @@ impl Connection {
last_modified: d.last_modified,
is_upload: true,
}),
Some(file_response::Union::Error(e)) => {
self.send_fs(ipc::FS::WriteError {
id: e.id,
file_num: e.file_num,
err: e.error,
});
}
_ => {}
},
Some(message::Union::Misc(misc)) => match misc.union {

View File

@@ -596,6 +596,12 @@ async fn handle_fs(fs: ipc::FS, write_jobs: &mut Vec<fs::TransferJob>, tx: &Unbo
fs::remove_job(id, write_jobs);
}
}
ipc::FS::WriteError { id, file_num, err } => {
if let Some(job) = fs::get_job(id, write_jobs) {
send_raw(fs::new_error(id, err, file_num), tx);
fs::remove_job(id, write_jobs);
}
}
ipc::FS::WriteBlock {
id,
file_num,