Revert "Feat: file transfer, resume (#12557)" (#12620)

This reverts commit 43ec57c769.
This commit is contained in:
RustDesk
2025-08-11 23:25:41 +08:00
committed by GitHub
parent 1fb0123ed7
commit 53efaf125c
4 changed files with 21 additions and 61 deletions

View File

@@ -704,7 +704,6 @@ impl<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
} 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<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
},
..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<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
}),
..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<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
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<T: InvokeUiSession> Remote<T> {
},
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);
}
}
_ => {}

View File

@@ -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<u8>),
Rename {
id: i32,
path: String,

View File

@@ -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)) => {

View File

@@ -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;
}