From 1f52bb35ba9b5ae92f9c3c947fae353ed1ef8144 Mon Sep 17 00:00:00 2001 From: ClSlaid Date: Thu, 19 Oct 2023 17:20:44 +0800 Subject: [PATCH] patch: fix server file_transfer not enabled Signed-off-by: ClSlaid --- libs/clipboard/src/lib.rs | 2 +- libs/clipboard/src/platform/linux/mod.rs | 6 +++++- libs/clipboard/src/platform/linux/x11.rs | 4 +++- src/ui_cm_interface.rs | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/libs/clipboard/src/lib.rs b/libs/clipboard/src/lib.rs index 0c4310977..c5177426f 100644 --- a/libs/clipboard/src/lib.rs +++ b/libs/clipboard/src/lib.rs @@ -214,7 +214,7 @@ fn send_data_to_channel(conn_id: i32, data: ClipboardFile) { .iter() .find(|x| x.conn_id == conn_id) { - log::debug!("send data to connection: {}", conn_id); + log::debug!("send data to connection: {}, data = {:?}", conn_id, data); allow_err!(msg_channel.sender.send(data)); } } diff --git a/libs/clipboard/src/platform/linux/mod.rs b/libs/clipboard/src/platform/linux/mod.rs index 73448d25f..ed9bb2445 100644 --- a/libs/clipboard/src/platform/linux/mod.rs +++ b/libs/clipboard/src/platform/linux/mod.rs @@ -730,7 +730,11 @@ fn send_format_list(conn_id: i32) -> Result<(), CliprdrError> { } fn send_file_list(paths: Vec, conn_id: i32) -> Result<(), CliprdrError> { - log::debug!("send file list to remote, conn={}", conn_id); + log::debug!( + "send file list to remote, conn={}, list={:?}", + conn_id, + paths + ); let files = construct_file_list(paths.as_slice())?; let mut data = BytesMut::with_capacity(4 + 592 * files.len()); diff --git a/libs/clipboard/src/platform/linux/x11.rs b/libs/clipboard/src/platform/linux/x11.rs index e7e0f846a..b263bf7b5 100644 --- a/libs/clipboard/src/platform/linux/x11.rs +++ b/libs/clipboard/src/platform/linux/x11.rs @@ -126,7 +126,8 @@ impl SysClipboard for X11Clipboard { }; if self.is_stopped() { - break; + std::thread::sleep(std::time::Duration::from_millis(100)); + continue; } let Some(paths) = sth else { @@ -162,6 +163,7 @@ impl SysClipboard for X11Clipboard { if let Err(e) = send_format_list(0) { log::warn!("failed to send format list: {}", e); + break; } std::thread::sleep(std::time::Duration::from_millis(100)); diff --git a/src/ui_cm_interface.rs b/src/ui_cm_interface.rs index 53020cf1a..80bba44b0 100644 --- a/src/ui_cm_interface.rs +++ b/src/ui_cm_interface.rs @@ -382,7 +382,7 @@ impl IpcTaskRunner { log::debug!("conn_id: {}", id); self.cm.add_connection(id, is_file_transfer, port_forward, peer_id, name, authorized, keyboard, clipboard, audio, file, restart, recording, from_switch,self.tx.clone()); self.conn_id = id; - #[cfg(windows)] + #[cfg(any(target_os = "linux", target_os = "windows"))] { self.file_transfer_enabled = _file_transfer_enabled; } @@ -489,7 +489,7 @@ impl IpcTaskRunner { } match &data { Data::SwitchPermission{name: _name, enabled: _enabled} => { - #[cfg(windows)] + #[cfg(any(target_os="linux", target_os="windows"))] if _name == "file" { self.file_transfer_enabled = *_enabled; }