diff options
| author | Aram Drevekenin <aram@poor.dev> | 2026-01-29 13:35:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-29 13:35:24 +0100 |
| commit | 82178222a2bc0cef9c8121d6dde316b5ef8986ab (patch) | |
| tree | 3423c7f396fced7fddc5a7ef34c384db5b209e9a | |
| parent | Allow saving current session for resurrection on demand (#4654) (diff) | |
| download | sl0ppij-82178222a2bc0cef9c8121d6dde316b5ef8986ab.tar.gz sl0ppij-82178222a2bc0cef9c8121d6dde316b5ef8986ab.tar.xz sl0ppij-82178222a2bc0cef9c8121d6dde316b5ef8986ab.zip | |
Handle errors in route loop (#4655)
* handle errors in route thread
* fix session-manager deadlock on startup
* rustfmt
* add pr
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | default-plugins/session-manager/src/main.rs | 7 | ||||
| -rw-r--r-- | zellij-server/src/plugins/zellij_exports.rs | 2 | ||||
| -rw-r--r-- | zellij-server/src/route.rs | 30 |
4 files changed, 25 insertions, 15 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 67be0769..b4c1d6fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) * fix: restore focused tab position on reattaching to a detached session (https://github.com/zellij-org/zellij/pull/4115) * fix: session creation time (all session created 0s ago bug) on musl targets (https://github.com/zellij-org/zellij/pull/4645) * feat: allow explicitly saving current session for resurrection (rather than waiting on the resurrection interval) (https://github.com/zellij-org/zellij/pull/4654) +* fix: proper error handling in route (https://github.com/zellij-org/zellij/pull/4655) ## [0.43.1] - 2025-08-08 diff --git a/default-plugins/session-manager/src/main.rs b/default-plugins/session-manager/src/main.rs index 1a76fdb9..85b120e7 100644 --- a/default-plugins/session-manager/src/main.rs +++ b/default-plugins/session-manager/src/main.rs @@ -62,10 +62,9 @@ impl ZellijPlugin for State { self.active_screen = ActiveScreen::NewSession; } self.new_session_info.is_welcome_screen = self.is_welcome_screen; - - self.current_session_last_saved_time = current_session_last_saved_time(); - set_timeout(1.0); - + if !self.is_welcome_screen { + set_timeout(0.1); // for the current_session_last_saved_time polling + } subscribe(&[ EventType::ModeUpdate, EventType::SessionUpdate, diff --git a/zellij-server/src/plugins/zellij_exports.rs b/zellij-server/src/plugins/zellij_exports.rs index 184936bd..01a1738e 100644 --- a/zellij-server/src/plugins/zellij_exports.rs +++ b/zellij-server/src/plugins/zellij_exports.rs @@ -2608,7 +2608,7 @@ fn current_session_last_saved_time(env: &PluginEnv) { let saved_timestamp_millis = if send_result.is_ok() { response_rx - .recv_timeout(std::time::Duration::from_secs(5)) + .recv_timeout(std::time::Duration::from_secs(1)) .ok() .flatten() } else { diff --git a/zellij-server/src/route.rs b/zellij-server/src/route.rs index 7ab11dc0..210306f7 100644 --- a/zellij-server/src/route.rs +++ b/zellij-server/src/route.rs @@ -1749,7 +1749,7 @@ pub(crate) fn route_thread_main( cli_client_id: None, }); - if route_action( + match route_action( action, client_id, None, @@ -1763,10 +1763,15 @@ pub(crate) fn route_thread_main( keybinds.clone(), client_input_mode, Some(os_input.clone()), - )? - .0 - { - should_break = true; + ) { + Ok(route_action_should_break) => { + if route_action_should_break.0 { + should_break = true; + } + }, + Err(e) => { + log::error!("{}", e); + }, } } } @@ -1839,7 +1844,7 @@ pub(crate) fn route_thread_main( client_keybinds, )) = session_data_assets { - if route_action( + match route_action( action, client_id, Some(cli_client_id), @@ -1853,10 +1858,15 @@ pub(crate) fn route_thread_main( client_keybinds, client_input_mode, Some(os_input.clone()), - )? - .0 - { - should_break = true; + ) { + Ok(route_action_should_break) => { + if route_action_should_break.0 { + should_break = true; + } + }, + Err(e) => { + log::error!("{}", e); + }, } } }, |
