From e91f4fc1048b8d8f47b31cebf0aef39d406182ed Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:25:53 +0800 Subject: [PATCH] fix: terminal, restore, cross users (#12335) Signed-off-by: fufesou --- src/client.rs | 10 +++++++++- src/client/io_loop.rs | 7 +++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/client.rs b/src/client.rs index 48d753756..b7f3611a7 100644 --- a/src/client.rs +++ b/src/client.rs @@ -2551,7 +2551,7 @@ impl LoginConfigHandler { }), ConnType::TERMINAL => { let mut terminal = Terminal::new(); - terminal.service_id = self.get_option("terminal-service-id"); + terminal.service_id = self.get_option(self.get_key_terminal_service_id()); lr.set_terminal(terminal); } _ => {} @@ -2602,6 +2602,14 @@ impl LoginConfigHandler { pub fn get_id(&self) -> &str { &self.id } + + pub fn get_key_terminal_service_id(&self) -> &'static str { + if self.is_terminal_admin { + "terminal-admin-service-id" + } else { + "terminal-service-id" + } + } } /// Media data. diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index e2838cc22..29b7601ca 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -1944,10 +1944,9 @@ impl Remote { use hbb_common::message_proto::terminal_response::Union; if let Some(Union::Opened(opened)) = &response.union { if opened.success && !opened.service_id.is_empty() { - self.handler.lc.write().unwrap().set_option( - "terminal-service-id".to_owned(), - opened.service_id.clone(), - ); + let mut lc = self.handler.lc.write().unwrap(); + let key = lc.get_key_terminal_service_id().to_owned(); + lc.set_option(key, opened.service_id.clone()); } } self.handler.handle_terminal_response(response);