From dcf30151c73b0b2d4fd506868966bb4c7dd09a2e Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sun, 6 Jul 2025 10:45:16 +0200 Subject: pkgs/tskm/browser/open: Don't fail on stale qutebrowser ipc sockets --- pkgs/by-name/ts/tskm/src/browser/mod.rs | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'pkgs/by-name/ts/tskm/src/browser/mod.rs') diff --git a/pkgs/by-name/ts/tskm/src/browser/mod.rs b/pkgs/by-name/ts/tskm/src/browser/mod.rs index 29abfcbd..d83bcbc4 100644 --- a/pkgs/by-name/ts/tskm/src/browser/mod.rs +++ b/pkgs/by-name/ts/tskm/src/browser/mod.rs @@ -1,5 +1,5 @@ use std::{ - env, + env, fs, io::Write, os::unix::net::UnixStream, path::PathBuf, @@ -101,9 +101,33 @@ pub fn open_in_browser( ) })); - if ipc_socket_path.exists() { - let mut stream = UnixStream::connect(ipc_socket_path)?; + let socket = if ipc_socket_path.exists() { + match UnixStream::connect(&ipc_socket_path) { + Ok(ok) => Some(ok), + Err(err) => match err.kind() { + std::io::ErrorKind::ConnectionRefused => { + // There is no qutebrowser listening to our connection. + fs::remove_file(&ipc_socket_path).with_context(|| { + format!( + "Failed to remove orphaned qutebrowser socket: {}", + ipc_socket_path.display() + ) + })?; + None + } + _ => Err(err).with_context(|| { + format!( + "Failed to connect to qutebrowser's ipc socket at: {}", + ipc_socket_path.display() + ) + })?, + }, + } + } else { + None + }; + if let Some(mut stream) = socket { let real_url = if let Some(urls) = urls { urls.into_iter().map(|url| url.to_string()).collect() } else { @@ -129,7 +153,7 @@ pub fn open_in_browser( ExitStatus::default() } else { let args = if let Some(urls) = urls { - urls.iter().map(|url| url.to_string()).collect() + urls.iter().map(ToString::to_string).collect() } else { vec![] }; -- cgit 1.4.1