@@ -80,6 +80,12 @@ impl std::fmt::Debug for PtySession {
8080}
8181
8282impl Pty {
83+ fn sessions ( ) -> Result < std:: sync:: MutexGuard < ' static , HashMap < String , PtySession > > , String > {
84+ PTY_SESSIONS
85+ . lock ( )
86+ . map_err ( |e| format ! ( "PTY sessions lock poisoned: {}" , e) )
87+ }
88+
8389 fn error_response ( id : u32 , session_id : & str , error : String , active : bool ) -> ModuleResult {
8490 let response = PtyResponse {
8591 session_id : session_id. to_string ( ) ,
@@ -115,7 +121,7 @@ impl Pty {
115121 }
116122
117123 fn check_session_status ( session_id : & str ) -> Result < bool , String > {
118- let sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
124+ let sessions = Self :: sessions ( ) ? ;
119125 let session = sessions
120126 . get ( session_id)
121127 . ok_or_else ( || format ! ( "PTY session {} does not exist" , session_id) ) ?;
@@ -143,7 +149,7 @@ impl Pty {
143149 }
144150
145151 fn get_session_handles ( session_id : & str ) -> Result < SessionHandles , String > {
146- let sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
152+ let sessions = Self :: sessions ( ) ? ;
147153 let session = sessions
148154 . get ( session_id)
149155 . ok_or_else ( || format ! ( "PTY session {} does not exist" , session_id) ) ?;
@@ -375,7 +381,10 @@ impl Pty {
375381
376382 fn terminate_and_remove_session ( session_id : & str ) -> bool {
377383 let session = {
378- let mut sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
384+ let mut sessions = match PTY_SESSIONS . lock ( ) {
385+ Ok ( s) => s,
386+ Err ( _) => return false ,
387+ } ;
379388 sessions. remove ( session_id)
380389 } ;
381390
@@ -519,7 +528,7 @@ impl Pty {
519528 } ;
520529
521530 {
522- let sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
531+ let sessions = Self :: sessions ( ) . map_err ( |e| anyhow :: anyhow! ( e ) ) ? ;
523532 if sessions. contains_key ( & session_id) {
524533 return Self :: error_response (
525534 id,
@@ -590,7 +599,7 @@ impl Pty {
590599 let output_receiver = Arc :: new ( Mutex :: new ( output_rx) ) ;
591600
592601 {
593- let mut sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
602+ let mut sessions = Self :: sessions ( ) . map_err ( |e| anyhow :: anyhow! ( e ) ) ? ;
594603 sessions. insert (
595604 session_id. clone ( ) ,
596605 PtySession {
@@ -756,7 +765,7 @@ impl Pty {
756765 } ;
757766
758767 {
759- let sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
768+ let sessions = Self :: sessions ( ) . map_err ( |e| anyhow :: anyhow! ( e ) ) ? ;
760769 if sessions. contains_key ( & session_id) {
761770 return Self :: error_response (
762771 id,
@@ -827,7 +836,7 @@ impl Pty {
827836 } ) ;
828837
829838 {
830- let mut sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
839+ let mut sessions = Self :: sessions ( ) . map_err ( |e| anyhow :: anyhow! ( e ) ) ? ;
831840 sessions. insert (
832841 session_id. clone ( ) ,
833842 PtySession {
@@ -1107,7 +1116,7 @@ impl Pty {
11071116
11081117 async fn list_sessions ( & mut self , id : u32 ) -> ModuleResult {
11091118 let ( sessions_info, active_sessions) = {
1110- let sessions = PTY_SESSIONS . lock ( ) . unwrap ( ) ;
1119+ let sessions = Self :: sessions ( ) . map_err ( |e| anyhow :: anyhow! ( e ) ) ? ;
11111120 if sessions. is_empty ( ) {
11121121 ( "No active PTY sessions" . to_string ( ) , Vec :: new ( ) )
11131122 } else {
0 commit comments