mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
add: server override
This commit is contained in:
@@ -506,7 +506,7 @@ impl TransferJob {
|
||||
match r.union {
|
||||
Some(file_transfer_send_confirm_request::Union::skip(s)) => {
|
||||
if s {
|
||||
log::debug!("skip current file");
|
||||
println!("skip current file");
|
||||
self.skip_current_file();
|
||||
} else {
|
||||
self.set_file_confirmed(true);
|
||||
@@ -561,6 +561,15 @@ pub fn new_block(block: FileTransferBlock) -> Message {
|
||||
msg_out
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn new_send_confirm(r: FileTransferSendConfirmRequest) -> Message {
|
||||
let mut msg_out = Message::new();
|
||||
let mut action = FileAction::new();
|
||||
action.set_send_confirm(r);
|
||||
msg_out.set_file_action(action);
|
||||
msg_out
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn new_receive(id: i32, path: String, files: Vec<FileEntry>) -> Message {
|
||||
let mut action = FileAction::new();
|
||||
@@ -678,14 +687,14 @@ pub fn create_dir(dir: &str) -> ResultType<()> {
|
||||
pub fn is_write_need_confirmation(
|
||||
file_path: &str,
|
||||
digest: &FileTransferDigest,
|
||||
) -> ResultType<bool> {
|
||||
) -> ResultType<Option<FileTransferDigest>> {
|
||||
let path = Path::new(file_path);
|
||||
if path.exists() && path.is_file() {
|
||||
let metadata = std::fs::metadata(path)?;
|
||||
let modified_time = metadata.modified()?;
|
||||
let remote_mt = Duration::from_secs(digest.last_edit_timestamp);
|
||||
let local_mt = modified_time.duration_since(UNIX_EPOCH)?;
|
||||
println!(
|
||||
log::info!(
|
||||
"{:?}:rm:{},lm:{},rf:{},lf:{}",
|
||||
path,
|
||||
remote_mt.as_secs(),
|
||||
@@ -693,15 +702,17 @@ pub fn is_write_need_confirmation(
|
||||
digest.file_size,
|
||||
metadata.len()
|
||||
);
|
||||
// if
|
||||
// is_recv && remote_mt >= local_mt) || (!is_recv && remote_mt <= local_mt) ||
|
||||
if remote_mt == local_mt && digest.file_size == metadata.len() {
|
||||
// I'm recving or sending an newer modified file!
|
||||
// or a
|
||||
return Ok(false);
|
||||
return Ok(None);
|
||||
}
|
||||
Ok(true)
|
||||
Ok(Some(FileTransferDigest {
|
||||
id: digest.id,
|
||||
file_num: digest.file_num,
|
||||
last_edit_timestamp: local_mt.as_secs(),
|
||||
file_size: metadata.len(),
|
||||
..Default::default()
|
||||
}))
|
||||
} else {
|
||||
Ok(false)
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user