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