mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-04-10 06:51:26 +03:00
This reverts commit 43ec57c769.
This commit is contained in:
@@ -704,7 +704,6 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
if is_remote {
|
if is_remote {
|
||||||
if let Some(job) = get_job(id, &mut self.write_jobs) {
|
if let Some(job) = get_job(id, &mut self.write_jobs) {
|
||||||
job.is_last_job = false;
|
job.is_last_job = false;
|
||||||
job.is_resume = true;
|
|
||||||
allow_err!(
|
allow_err!(
|
||||||
peer.send(&fs::new_send(
|
peer.send(&fs::new_send(
|
||||||
id,
|
id,
|
||||||
@@ -719,13 +718,12 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
} else {
|
} else {
|
||||||
if let Some(job) = get_job(id, &mut self.read_jobs) {
|
if let Some(job) = get_job(id, &mut self.read_jobs) {
|
||||||
match &job.data_source {
|
match &job.data_source {
|
||||||
fs::DataSource::FilePath(_p) => {
|
fs::DataSource::FilePath(p) => {
|
||||||
job.is_last_job = false;
|
job.is_last_job = false;
|
||||||
job.is_resume = true;
|
|
||||||
allow_err!(
|
allow_err!(
|
||||||
peer.send(&fs::new_receive(
|
peer.send(&fs::new_receive(
|
||||||
id,
|
id,
|
||||||
job.remote.clone(),
|
p.to_string_lossy().to_string(),
|
||||||
job.file_num,
|
job.file_num,
|
||||||
job.files.clone(),
|
job.files.clone(),
|
||||||
job.total_size(),
|
job.total_size(),
|
||||||
@@ -773,8 +771,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
Some(file_transfer_send_confirm_request::Union::Skip(true))
|
Some(file_transfer_send_confirm_request::Union::Skip(true))
|
||||||
},
|
},
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
});
|
||||||
.await;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if let Some(job) = fs::get_job(id, &mut self.write_jobs) {
|
if let Some(job) = fs::get_job(id, &mut self.write_jobs) {
|
||||||
@@ -793,7 +790,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
},
|
},
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
job.confirm(&req).await;
|
job.confirm(&req);
|
||||||
file_action.set_send_confirm(req);
|
file_action.set_send_confirm(req);
|
||||||
msg.set_file_action(file_action);
|
msg.set_file_action(file_action);
|
||||||
allow_err!(peer.send(&msg).await);
|
allow_err!(peer.send(&msg).await);
|
||||||
@@ -1474,24 +1471,14 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
if let fs::DataSource::FilePath(p) = &job.data_source {
|
if let fs::DataSource::FilePath(p) = &job.data_source {
|
||||||
let read_path =
|
let read_path =
|
||||||
get_string(&fs::TransferJob::join(p, &file.name));
|
get_string(&fs::TransferJob::join(p, &file.name));
|
||||||
let mut overwrite_strategy =
|
let overwrite_strategy =
|
||||||
job.default_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 {
|
if let Some(overwrite) = overwrite_strategy {
|
||||||
let req = FileTransferSendConfirmRequest {
|
let req = FileTransferSendConfirmRequest {
|
||||||
id: digest.id,
|
id: digest.id,
|
||||||
file_num: digest.file_num,
|
file_num: digest.file_num,
|
||||||
union: Some(if overwrite {
|
union: Some(if overwrite {
|
||||||
file_transfer_send_confirm_request::Union::OffsetBlk(offset)
|
file_transfer_send_confirm_request::Union::OffsetBlk(0)
|
||||||
} else {
|
} else {
|
||||||
file_transfer_send_confirm_request::Union::Skip(
|
file_transfer_send_confirm_request::Union::Skip(
|
||||||
true,
|
true,
|
||||||
@@ -1499,7 +1486,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
}),
|
}),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
job.confirm(&req).await;
|
job.confirm(&req);
|
||||||
let msg = new_send_confirm(req);
|
let msg = new_send_confirm(req);
|
||||||
allow_err!(peer.send(&msg).await);
|
allow_err!(peer.send(&msg).await);
|
||||||
} else {
|
} else {
|
||||||
@@ -1520,7 +1507,8 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
if let fs::DataSource::FilePath(p) = &job.data_source {
|
if let fs::DataSource::FilePath(p) = &job.data_source {
|
||||||
let write_path =
|
let write_path =
|
||||||
get_string(&fs::TransferJob::join(p, &file.name));
|
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(
|
match fs::is_write_need_confirmation(
|
||||||
&write_path,
|
&write_path,
|
||||||
&digest,
|
&digest,
|
||||||
@@ -1528,29 +1516,16 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
Ok(res) => match res {
|
Ok(res) => match res {
|
||||||
DigestCheckResult::IsSame => {
|
DigestCheckResult::IsSame => {
|
||||||
let req = FileTransferSendConfirmRequest {
|
let req = FileTransferSendConfirmRequest {
|
||||||
id: digest.id,
|
id: digest.id,
|
||||||
file_num: digest.file_num,
|
file_num: digest.file_num,
|
||||||
union: Some(file_transfer_send_confirm_request::Union::Skip(true)),
|
union: Some(file_transfer_send_confirm_request::Union::Skip(true)),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
job.confirm(&req).await;
|
job.confirm(&req);
|
||||||
let msg = new_send_confirm(req);
|
let msg = new_send_confirm(req);
|
||||||
allow_err!(peer.send(&msg).await);
|
allow_err!(peer.send(&msg).await);
|
||||||
}
|
}
|
||||||
DigestCheckResult::NeedConfirm(digest) => {
|
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
|
if let Some(overwrite) = overwrite_strategy
|
||||||
{
|
{
|
||||||
let req =
|
let req =
|
||||||
@@ -1558,13 +1533,13 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
id: digest.id,
|
id: digest.id,
|
||||||
file_num: digest.file_num,
|
file_num: digest.file_num,
|
||||||
union: Some(if overwrite {
|
union: Some(if overwrite {
|
||||||
file_transfer_send_confirm_request::Union::OffsetBlk(offset)
|
file_transfer_send_confirm_request::Union::OffsetBlk(0)
|
||||||
} else {
|
} else {
|
||||||
file_transfer_send_confirm_request::Union::Skip(true)
|
file_transfer_send_confirm_request::Union::Skip(true)
|
||||||
}),
|
}),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
job.confirm(&req).await;
|
job.confirm(&req);
|
||||||
let msg = new_send_confirm(req);
|
let msg = new_send_confirm(req);
|
||||||
allow_err!(peer.send(&msg).await);
|
allow_err!(peer.send(&msg).await);
|
||||||
} else {
|
} else {
|
||||||
@@ -1584,7 +1559,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
union: Some(file_transfer_send_confirm_request::Union::OffsetBlk(0)),
|
union: Some(file_transfer_send_confirm_request::Union::OffsetBlk(0)),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
job.confirm(&req).await;
|
job.confirm(&req);
|
||||||
let msg = new_send_confirm(req);
|
let msg = new_send_confirm(req);
|
||||||
allow_err!(peer.send(&msg).await);
|
allow_err!(peer.send(&msg).await);
|
||||||
}
|
}
|
||||||
@@ -1931,7 +1906,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
},
|
},
|
||||||
Some(file_action::Union::SendConfirm(c)) => {
|
Some(file_action::Union::SendConfirm(c)) => {
|
||||||
if let Some(job) = fs::get_job(c.id, &mut self.read_jobs) {
|
if let Some(job) = fs::get_job(c.id, &mut self.read_jobs) {
|
||||||
job.confirm(&c).await;
|
job.confirm(&c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|||||||
@@ -26,9 +26,7 @@ use hbb_common::{
|
|||||||
config::{self, keys::OPTION_ALLOW_WEBSOCKET, Config, Config2},
|
config::{self, keys::OPTION_ALLOW_WEBSOCKET, Config, Config2},
|
||||||
futures::StreamExt as _,
|
futures::StreamExt as _,
|
||||||
futures_util::sink::SinkExt,
|
futures_util::sink::SinkExt,
|
||||||
log,
|
log, password_security as password, timeout,
|
||||||
message_proto::FileTransferSendConfirmRequest,
|
|
||||||
password_security as password, timeout,
|
|
||||||
tokio::{
|
tokio::{
|
||||||
self,
|
self,
|
||||||
io::{AsyncRead, AsyncWrite},
|
io::{AsyncRead, AsyncWrite},
|
||||||
@@ -107,7 +105,6 @@ pub enum FS {
|
|||||||
last_modified: u64,
|
last_modified: u64,
|
||||||
is_upload: bool,
|
is_upload: bool,
|
||||||
},
|
},
|
||||||
SendConfirm(Vec<u8>),
|
|
||||||
Rename {
|
Rename {
|
||||||
id: i32,
|
id: i32,
|
||||||
path: String,
|
path: String,
|
||||||
|
|||||||
@@ -2703,11 +2703,7 @@ impl Connection {
|
|||||||
}
|
}
|
||||||
Some(file_action::Union::SendConfirm(r)) => {
|
Some(file_action::Union::SendConfirm(r)) => {
|
||||||
if let Some(job) = fs::get_job(r.id, &mut self.read_jobs) {
|
if let Some(job) = fs::get_job(r.id, &mut self.read_jobs) {
|
||||||
job.confirm(&r).await;
|
job.confirm(&r);
|
||||||
} else {
|
|
||||||
if let Ok(sc) = r.write_to_bytes() {
|
|
||||||
self.send_fs(ipc::FS::SendConfirm(sc));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Some(file_action::Union::Rename(r)) => {
|
Some(file_action::Union::Rename(r)) => {
|
||||||
|
|||||||
@@ -880,7 +880,6 @@ async fn handle_fs(
|
|||||||
let path = get_string(&fs::TransferJob::join(p, &file.name));
|
let path = get_string(&fs::TransferJob::join(p, &file.name));
|
||||||
match is_write_need_confirmation(&path, &digest) {
|
match is_write_need_confirmation(&path, &digest) {
|
||||||
Ok(digest_result) => {
|
Ok(digest_result) => {
|
||||||
job.set_digest(file_size, last_modified);
|
|
||||||
match digest_result {
|
match digest_result {
|
||||||
DigestCheckResult::IsSame => {
|
DigestCheckResult::IsSame => {
|
||||||
req.set_skip(true);
|
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 } => {
|
ipc::FS::Rename { id, path, new_name } => {
|
||||||
rename_file(path, new_name, id, tx).await;
|
rename_file(path, new_name, id, tx).await;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user