check occupied port

Signed-off-by: FTCHD <144691102+FTCHD@users.noreply.github.com>
This commit is contained in:
FTCHD
2025-09-24 20:18:10 +02:00
parent a0955cea90
commit cc2411acb0
2 changed files with 23 additions and 2 deletions
+2 -1
View File
@@ -118,7 +118,8 @@ async function validateInstance() {
async function checkAlreadyRunning() {
try {
const running = await invoke<boolean>('is_rclone_running')
const rcPort = 5572
const running = await invoke<boolean>('is_rclone_running', { port: rcPort })
if (running) {
const confirmed = await ask(
'Rclone is already running on this system.\n\nPlease stop it before launching Rclone UI.',
+21 -1
View File
@@ -183,7 +183,27 @@ fn get_uid() -> String {
}
#[tauri::command]
fn is_rclone_running() -> bool {
fn is_rclone_running(port: Option<u16>) -> bool {
if let Some(port) = port {
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, TcpStream};
use std::time::Duration;
let timeout = Duration::from_millis(200);
let addrs = [
SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), port),
SocketAddr::new(IpAddr::V6(Ipv6Addr::LOCALHOST), port),
];
for addr in addrs.iter() {
if let Ok(stream) = TcpStream::connect_timeout(addr, timeout) {
drop(stream);
return true;
}
}
return false;
}
let system = System::new_all();
for (_pid, process) in system.processes() {