From 53efaf125cf15417237bb3b65a52ee23c347cb0c Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:25:41 +0800 Subject: [PATCH] Revert "Feat: file transfer, resume (#12557)" (#12620) This reverts commit 43ec57c7691152aad708f49f0a838da87db31e39. --- src/client/io_loop.rs | 63 ++++++++++++---------------------------- src/ipc.rs | 5 +--- src/server/connection.rs | 6 +--- src/ui_cm_interface.rs | 8 ----- 4 files changed, 21 insertions(+), 61 deletions(-) diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index 878a227f2..3b07525fb 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -704,7 +704,6 @@ impl Remote { if is_remote { if let Some(job) = get_job(id, &mut self.write_jobs) { job.is_last_job = false; - job.is_resume = true; allow_err!( peer.send(&fs::new_send( id, @@ -719,13 +718,12 @@ impl Remote { } else { if let Some(job) = get_job(id, &mut self.read_jobs) { match &job.data_source { - fs::DataSource::FilePath(_p) => { + fs::DataSource::FilePath(p) => { job.is_last_job = false; - job.is_resume = true; allow_err!( peer.send(&fs::new_receive( id, - job.remote.clone(), + p.to_string_lossy().to_string(), job.file_num, job.files.clone(), job.total_size(), @@ -773,8 +771,7 @@ impl Remote { Some(file_transfer_send_confirm_request::Union::Skip(true)) }, ..Default::default() - }) - .await; + }); } } else { if let Some(job) = fs::get_job(id, &mut self.write_jobs) { @@ -793,7 +790,7 @@ impl Remote { }, ..Default::default() }; - job.confirm(&req).await; + job.confirm(&req); file_action.set_send_confirm(req); msg.set_file_action(file_action); allow_err!(peer.send(&msg).await); @@ -1474,24 +1471,14 @@ impl Remote { if let fs::DataSource::FilePath(p) = &job.data_source { let read_path = get_string(&fs::TransferJob::join(p, &file.name)); - let mut overwrite_strategy = + let overwrite_strategy = job.default_overwrite_strategy(); - let mut offset = 0; - if digest.is_identical && job.is_resume { - if digest.transferred_size > 0 { - overwrite_strategy = Some(true); - offset = digest.transferred_size as _; - } else { - // Force skip if the file is identical and the job is set to resume. - overwrite_strategy = Some(false); - } - } if let Some(overwrite) = overwrite_strategy { let req = FileTransferSendConfirmRequest { id: digest.id, file_num: digest.file_num, union: Some(if overwrite { - file_transfer_send_confirm_request::Union::OffsetBlk(offset) + file_transfer_send_confirm_request::Union::OffsetBlk(0) } else { file_transfer_send_confirm_request::Union::Skip( true, @@ -1499,7 +1486,7 @@ impl Remote { }), ..Default::default() }; - job.confirm(&req).await; + job.confirm(&req); let msg = new_send_confirm(req); allow_err!(peer.send(&msg).await); } else { @@ -1520,7 +1507,8 @@ impl Remote { if let fs::DataSource::FilePath(p) = &job.data_source { let write_path = get_string(&fs::TransferJob::join(p, &file.name)); - job.set_digest(digest.file_size, digest.last_modified); + let overwrite_strategy = + job.default_overwrite_strategy(); match fs::is_write_need_confirmation( &write_path, &digest, @@ -1528,29 +1516,16 @@ impl Remote { Ok(res) => match res { DigestCheckResult::IsSame => { let req = FileTransferSendConfirmRequest { - id: digest.id, - file_num: digest.file_num, - union: Some(file_transfer_send_confirm_request::Union::Skip(true)), - ..Default::default() - }; - job.confirm(&req).await; + id: digest.id, + file_num: digest.file_num, + union: Some(file_transfer_send_confirm_request::Union::Skip(true)), + ..Default::default() + }; + job.confirm(&req); let msg = new_send_confirm(req); allow_err!(peer.send(&msg).await); } DigestCheckResult::NeedConfirm(digest) => { - let mut overwrite_strategy = - job.default_overwrite_strategy(); - let mut offset = 0; - if digest.is_identical && job.is_resume { - if digest.transferred_size > 0 { - overwrite_strategy = Some(true); - offset = - digest.transferred_size as _; - } else { - // Force skip if the file is identical and the job is set to resume. - overwrite_strategy = Some(false); - } - } if let Some(overwrite) = overwrite_strategy { let req = @@ -1558,13 +1533,13 @@ impl Remote { id: digest.id, file_num: digest.file_num, union: Some(if overwrite { - file_transfer_send_confirm_request::Union::OffsetBlk(offset) + file_transfer_send_confirm_request::Union::OffsetBlk(0) } else { file_transfer_send_confirm_request::Union::Skip(true) }), ..Default::default() }; - job.confirm(&req).await; + job.confirm(&req); let msg = new_send_confirm(req); allow_err!(peer.send(&msg).await); } else { @@ -1584,7 +1559,7 @@ impl Remote { union: Some(file_transfer_send_confirm_request::Union::OffsetBlk(0)), ..Default::default() }; - job.confirm(&req).await; + job.confirm(&req); let msg = new_send_confirm(req); allow_err!(peer.send(&msg).await); } @@ -1931,7 +1906,7 @@ impl Remote { }, Some(file_action::Union::SendConfirm(c)) => { if let Some(job) = fs::get_job(c.id, &mut self.read_jobs) { - job.confirm(&c).await; + job.confirm(&c); } } _ => {} diff --git a/src/ipc.rs b/src/ipc.rs index 8967b9213..1ae048162 100644 --- a/src/ipc.rs +++ b/src/ipc.rs @@ -26,9 +26,7 @@ use hbb_common::{ config::{self, keys::OPTION_ALLOW_WEBSOCKET, Config, Config2}, futures::StreamExt as _, futures_util::sink::SinkExt, - log, - message_proto::FileTransferSendConfirmRequest, - password_security as password, timeout, + log, password_security as password, timeout, tokio::{ self, io::{AsyncRead, AsyncWrite}, @@ -107,7 +105,6 @@ pub enum FS { last_modified: u64, is_upload: bool, }, - SendConfirm(Vec), Rename { id: i32, path: String, diff --git a/src/server/connection.rs b/src/server/connection.rs index 8ce09f932..01d84437d 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -2703,11 +2703,7 @@ impl Connection { } Some(file_action::Union::SendConfirm(r)) => { if let Some(job) = fs::get_job(r.id, &mut self.read_jobs) { - job.confirm(&r).await; - } else { - if let Ok(sc) = r.write_to_bytes() { - self.send_fs(ipc::FS::SendConfirm(sc)); - } + job.confirm(&r); } } Some(file_action::Union::Rename(r)) => { diff --git a/src/ui_cm_interface.rs b/src/ui_cm_interface.rs index 0f5bc5709..880f0ca61 100644 --- a/src/ui_cm_interface.rs +++ b/src/ui_cm_interface.rs @@ -880,7 +880,6 @@ async fn handle_fs( let path = get_string(&fs::TransferJob::join(p, &file.name)); match is_write_need_confirmation(&path, &digest) { Ok(digest_result) => { - job.set_digest(file_size, last_modified); match digest_result { DigestCheckResult::IsSame => { req.set_skip(true); @@ -910,13 +909,6 @@ async fn handle_fs( } } } - ipc::FS::SendConfirm(bytes) => { - if let Ok(r) = FileTransferSendConfirmRequest::parse_from_bytes(&bytes) { - if let Some(job) = fs::get_job(r.id, write_jobs) { - job.confirm(&r).await; - } - } - } ipc::FS::Rename { id, path, new_name } => { rename_file(path, new_name, id, tx).await; }