mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
fix: infinite execution loop when transfer data
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user