diff --git a/src/symbols/systemd/user_service.rs b/src/symbols/systemd/user_service.rs index fa976e9..998c3b0 100644 --- a/src/symbols/systemd/user_service.rs +++ b/src/symbols/systemd/user_service.rs @@ -2,7 +2,6 @@ use std::borrow::Cow; use std::error::Error; use std::ffi::OsStr; use std::fmt; -use std::fs; use std::io; use std::path::Path; @@ -188,15 +187,18 @@ impl<'a, C: AsRef, R: CommandRunner> Symbol for UserService<'a, C, R> { self.systemctl_wait_for_dbus(args!["--user", "enable", self.service_name])?; self.systemctl_wait_for_dbus(args!["--user", "restart", self.service_name])?; - if !(self.check_if_service()?) { - return Err(Box::new( - UserServiceError::GenericError as UserServiceError, - )); - } + loop { + if !(self.check_if_service()?) { + return Err(Box::new( + UserServiceError::GenericError as UserServiceError, + )); + } - fs::metadata(&self.socket_path) - .map(|_| ()) - .map_err(|e| Box::new(e) as Box) + if self.socket_path.exists() { + return Ok(()); + } + sleep(Duration::from_millis(500)); + } } fn get_prerequisites(&self) -> Vec {