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);