judge failure of get_current_process_session_id with None rather than 0 (#7188)
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
		
							parent
							
								
									a8eff641b2
								
							
						
					
					
						commit
						58ddac63d2
					
				| @ -1194,6 +1194,7 @@ impl Connection { | |||||||
|         .into(); |         .into(); | ||||||
| 
 | 
 | ||||||
|         let mut sub_service = false; |         let mut sub_service = false; | ||||||
|  |         #[allow(unused_mut)] | ||||||
|         let mut wait_session_id_confirm = false; |         let mut wait_session_id_confirm = false; | ||||||
|         #[cfg(windows)] |         #[cfg(windows)] | ||||||
|         self.handle_windows_specific_session(&mut pi, &mut wait_session_id_confirm); |         self.handle_windows_specific_session(&mut pi, &mut wait_session_id_confirm); | ||||||
| @ -1303,22 +1304,22 @@ impl Connection { | |||||||
|         wait_session_id_confirm: &mut bool, |         wait_session_id_confirm: &mut bool, | ||||||
|     ) { |     ) { | ||||||
|         let sessions = crate::platform::get_available_sessions(true); |         let sessions = crate::platform::get_available_sessions(true); | ||||||
|         let current_sid = crate::platform::get_current_process_session_id().unwrap_or_default(); |         if let Some(current_sid) = crate::platform::get_current_process_session_id() { | ||||||
|         if crate::platform::is_installed() |             if crate::platform::is_installed() | ||||||
|             && crate::platform::is_share_rdp() |                 && crate::platform::is_share_rdp() | ||||||
|             && raii::AuthedConnID::remote_and_file_conn_count() == 1 |                 && raii::AuthedConnID::remote_and_file_conn_count() == 1 | ||||||
|             && sessions.len() > 1 |                 && sessions.len() > 1 | ||||||
|             && current_sid != 0 |                 && (get_version_number(&self.lr.version) > get_version_number("1.2.4") | ||||||
|             && (get_version_number(&self.lr.version) > get_version_number("1.2.4") |                     || self.lr.option.support_windows_specific_session == BoolOption::Yes.into()) | ||||||
|                 || self.lr.option.support_windows_specific_session == BoolOption::Yes.into()) |             { | ||||||
|         { |                 pi.windows_sessions = Some(WindowsSessions { | ||||||
|             pi.windows_sessions = Some(WindowsSessions { |                     sessions, | ||||||
|                 sessions, |                     current_sid, | ||||||
|                 current_sid, |                     ..Default::default() | ||||||
|                 ..Default::default() |                 }) | ||||||
|             }) |                 .into(); | ||||||
|             .into(); |                 *wait_session_id_confirm = true; | ||||||
|             *wait_session_id_confirm = true; |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -2283,28 +2284,29 @@ impl Connection { | |||||||
|                         .user_record(self.inner.id(), status), |                         .user_record(self.inner.id(), status), | ||||||
|                     #[cfg(windows)] |                     #[cfg(windows)] | ||||||
|                     Some(misc::Union::SelectedSid(sid)) => { |                     Some(misc::Union::SelectedSid(sid)) => { | ||||||
|                         let current_process_usid = |                         if let Some(current_process_sid) = | ||||||
|                             crate::platform::get_current_process_session_id().unwrap_or_default(); |                             crate::platform::get_current_process_session_id() | ||||||
|                         let sessions = crate::platform::get_available_sessions(false); |  | ||||||
|                         if crate::platform::is_installed() |  | ||||||
|                             && crate::platform::is_share_rdp() |  | ||||||
|                             && raii::AuthedConnID::remote_and_file_conn_count() == 1 |  | ||||||
|                             && sessions.len() > 1 |  | ||||||
|                             && current_process_usid != 0 |  | ||||||
|                             && current_process_usid != sid |  | ||||||
|                             && sessions.iter().any(|e| e.sid == sid) |  | ||||||
|                         { |                         { | ||||||
|                             std::thread::spawn(move || { |                             let sessions = crate::platform::get_available_sessions(false); | ||||||
|                                 let _ = ipc::connect_to_user_session(Some(sid)); |                             if crate::platform::is_installed() | ||||||
|                             }); |                                 && crate::platform::is_share_rdp() | ||||||
|                             return false; |                                 && raii::AuthedConnID::remote_and_file_conn_count() == 1 | ||||||
|                         } |                                 && sessions.len() > 1 | ||||||
|                         if self.file_transfer.is_some() { |                                 && current_process_sid != sid | ||||||
|                             if let Some((dir, show_hidden)) = self.delayed_read_dir.take() { |                                 && sessions.iter().any(|e| e.sid == sid) | ||||||
|                                 self.read_dir(&dir, show_hidden); |                             { | ||||||
|  |                                 std::thread::spawn(move || { | ||||||
|  |                                     let _ = ipc::connect_to_user_session(Some(sid)); | ||||||
|  |                                 }); | ||||||
|  |                                 return false; | ||||||
|  |                             } | ||||||
|  |                             if self.file_transfer.is_some() { | ||||||
|  |                                 if let Some((dir, show_hidden)) = self.delayed_read_dir.take() { | ||||||
|  |                                     self.read_dir(&dir, show_hidden); | ||||||
|  |                                 } | ||||||
|  |                             } else { | ||||||
|  |                                 self.try_sub_services(); | ||||||
|                             } |                             } | ||||||
|                         } else { |  | ||||||
|                             self.try_sub_services(); |  | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                     _ => {} |                     _ => {} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user