Remove SERVER_FILE_TRANSFER_ENABLED unsafe code, by using AtomicBool

This commit is contained in:
Saverio Miroddi 2022-05-24 18:15:46 +02:00
parent 45bb271c88
commit 0c0051d59a

View File

@ -69,7 +69,7 @@ fn get_key_state(key: enigo::Key) -> bool {
static mut IS_IN: bool = false; static mut IS_IN: bool = false;
static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(false); static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(false);
static SERVER_KEYBOARD_ENABLED: AtomicBool = AtomicBool::new(true); static SERVER_KEYBOARD_ENABLED: AtomicBool = AtomicBool::new(true);
static mut SERVER_FILE_TRANSFER_ENABLED: bool = true; static SERVER_FILE_TRANSFER_ENABLED: AtomicBool = AtomicBool::new(true);
static SERVER_CLIPBOARD_ENABLED: AtomicBool = AtomicBool::new(true); static SERVER_CLIPBOARD_ENABLED: AtomicBool = AtomicBool::new(true);
#[cfg(windows)] #[cfg(windows)]
static mut IS_ALT_GR: bool = false; static mut IS_ALT_GR: bool = false;
@ -1380,11 +1380,9 @@ impl Remote {
}; };
match Client::start(&self.handler.id, key, token, conn_type).await { match Client::start(&self.handler.id, key, token, conn_type).await {
Ok((mut peer, direct)) => { Ok((mut peer, direct)) => {
unsafe {
SERVER_KEYBOARD_ENABLED.store(true, Ordering::SeqCst); SERVER_KEYBOARD_ENABLED.store(true, Ordering::SeqCst);
SERVER_CLIPBOARD_ENABLED.store(true, Ordering::SeqCst); SERVER_CLIPBOARD_ENABLED.store(true, Ordering::SeqCst);
SERVER_FILE_TRANSFER_ENABLED = true; SERVER_FILE_TRANSFER_ENABLED.store(true, Ordering::SeqCst);
}
self.handler self.handler
.call("setConnectionType", &make_args!(peer.is_secured(), direct)); .call("setConnectionType", &make_args!(peer.is_secured(), direct));
@ -1462,11 +1460,9 @@ impl Remote {
if let Some(stop) = stop_clipboard { if let Some(stop) = stop_clipboard {
stop.send(()).ok(); stop.send(()).ok();
} }
unsafe {
SERVER_KEYBOARD_ENABLED.store(false, Ordering::SeqCst); SERVER_KEYBOARD_ENABLED.store(false, Ordering::SeqCst);
SERVER_CLIPBOARD_ENABLED.store(false, Ordering::SeqCst); SERVER_CLIPBOARD_ENABLED.store(false, Ordering::SeqCst);
SERVER_FILE_TRANSFER_ENABLED = false; SERVER_FILE_TRANSFER_ENABLED.store(false, Ordering::SeqCst);
}
} }
fn handle_job_status(&mut self, id: i32, file_num: i32, err: Option<String>) { fn handle_job_status(&mut self, id: i32, file_num: i32, err: Option<String>) {
@ -2195,9 +2191,7 @@ impl Remote {
.call2("setPermission", &make_args!("audio", p.enabled)); .call2("setPermission", &make_args!("audio", p.enabled));
} }
Permission::File => { Permission::File => {
unsafe { SERVER_FILE_TRANSFER_ENABLED.store(p.enabled, Ordering::SeqCst);
SERVER_FILE_TRANSFER_ENABLED = p.enabled;
}
if !p.enabled && self.handler.is_file_transfer() { if !p.enabled && self.handler.is_file_transfer() {
return true; return true;
} }
@ -2258,7 +2252,7 @@ impl Remote {
fn check_clipboard_file_context(&mut self) { fn check_clipboard_file_context(&mut self) {
#[cfg(windows)] #[cfg(windows)]
{ {
let enabled = unsafe { SERVER_FILE_TRANSFER_ENABLED } let enabled = SERVER_FILE_TRANSFER_ENABLED.load(Ordering::SeqCst)
&& self.handler.lc.read().unwrap().enable_file_transfer; && self.handler.lc.read().unwrap().enable_file_transfer;
if enabled == self.clipboard_file_context.is_none() { if enabled == self.clipboard_file_context.is_none() {
self.clipboard_file_context = if enabled { self.clipboard_file_context = if enabled {