windows specific session, fix conn count (#7133)

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2024-02-15 10:44:32 +08:00 committed by GitHub
parent 4bf3764b5d
commit 73d429d064
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 3 deletions

View File

@ -464,7 +464,7 @@ extern "C"
void get_available_session_ids(PWSTR buf, uint32_t bufSize, BOOL include_rdp) {
std::vector<std::wstring> sessionIds;
PWTS_SESSION_INFOA pInfos;
PWTS_SESSION_INFOA pInfos = NULL;
DWORD count;
if (WTSEnumerateSessionsA(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pInfos, &count)) {
@ -498,7 +498,7 @@ extern "C"
}
if (buf && !tmpStr.empty() && tmpStr.size() < bufSize) {
memcpy(buf, tmpStr.c_str(), (tmpStr.size() + 1) * sizeof(wchar_t));
wcsncpy_s(buf, bufSize, tmpStr.c_str(), tmpStr.size());
}
}

View File

@ -1826,7 +1826,7 @@ impl Connection {
self.checked_multiple_session = true;
if crate::platform::is_installed()
&& crate::platform::is_share_rdp()
&& !(*CONN_COUNT.lock().unwrap() > 1)
&& Self::alive_conns().len() == 1
&& get_version_number(&self.lr.version) >= get_version_number("1.2.4")
{
if !self
@ -3487,6 +3487,10 @@ extern "C" fn connection_shutdown_hook() {
}
mod raii {
// CONN_COUNT: remote connection count in fact
// ALIVE_CONNS: all connections, including unauthorized connections
// AUTHED_CONNS: all authorized connections
use super::*;
pub struct ConnectionID(i32);