windows specific session, fix conn count (#7133)
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
4bf3764b5d
commit
73d429d064
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user