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) {
|
void get_available_session_ids(PWSTR buf, uint32_t bufSize, BOOL include_rdp) {
|
||||||
std::vector<std::wstring> sessionIds;
|
std::vector<std::wstring> sessionIds;
|
||||||
PWTS_SESSION_INFOA pInfos;
|
PWTS_SESSION_INFOA pInfos = NULL;
|
||||||
DWORD count;
|
DWORD count;
|
||||||
|
|
||||||
if (WTSEnumerateSessionsA(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pInfos, &count)) {
|
if (WTSEnumerateSessionsA(WTS_CURRENT_SERVER_HANDLE, 0, 1, &pInfos, &count)) {
|
||||||
@ -498,7 +498,7 @@ extern "C"
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (buf && !tmpStr.empty() && tmpStr.size() < bufSize) {
|
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;
|
self.checked_multiple_session = true;
|
||||||
if crate::platform::is_installed()
|
if crate::platform::is_installed()
|
||||||
&& crate::platform::is_share_rdp()
|
&& 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")
|
&& get_version_number(&self.lr.version) >= get_version_number("1.2.4")
|
||||||
{
|
{
|
||||||
if !self
|
if !self
|
||||||
@ -3487,6 +3487,10 @@ extern "C" fn connection_shutdown_hook() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mod raii {
|
mod raii {
|
||||||
|
// CONN_COUNT: remote connection count in fact
|
||||||
|
// ALIVE_CONNS: all connections, including unauthorized connections
|
||||||
|
// AUTHED_CONNS: all authorized connections
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
pub struct ConnectionID(i32);
|
pub struct ConnectionID(i32);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user