diff --git a/include/freerdp/channels/wtsvc.h b/include/freerdp/channels/wtsvc.h index f2c2e25ec..db7feacc4 100644 --- a/include/freerdp/channels/wtsvc.h +++ b/include/freerdp/channels/wtsvc.h @@ -63,6 +63,7 @@ extern "C" "Use WTSVirtualChannelManagerGetEventHandle", void WTSVirtualChannelManagerGetFileDescriptor(HANDLE hServer, void** fds, int* fds_count)); #endif + FREERDP_API BOOL WTSVirtualChannelManagerOpen(HANDLE hServer); FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptor(HANDLE hServer); FREERDP_API BOOL WTSVirtualChannelManagerCheckFileDescriptorEx(HANDLE hServer, BOOL autoOpen); FREERDP_API HANDLE WTSVirtualChannelManagerGetEventHandle(HANDLE hServer); diff --git a/libfreerdp/core/server.c b/libfreerdp/core/server.c index e33bb5abf..4aba5f505 100644 --- a/libfreerdp/core/server.c +++ b/libfreerdp/core/server.c @@ -529,14 +529,18 @@ void WTSVirtualChannelManagerGetFileDescriptor(HANDLE hServer, void** fds, int* } #endif -static BOOL WTSVirtualChannelManagerOpen(WTSVirtualChannelManager* vcm) +BOOL WTSVirtualChannelManagerOpen(HANDLE hServer) { + WTSVirtualChannelManager* vcm = (WTSVirtualChannelManager*)hServer; + const freerdp_peer* client; + if (!vcm) return FALSE; WINPR_ASSERT(vcm->client); + client = vcm->client; - if ((vcm->drdynvc_state == DRDYNVC_STATE_NONE) && vcm->client->activated) + if (vcm->drdynvc_state == DRDYNVC_STATE_NONE) { rdpPeerChannel* channel; UINT32 dynvc_caps; @@ -573,7 +577,7 @@ BOOL WTSVirtualChannelManagerCheckFileDescriptorEx(HANDLE hServer, BOOL autoOpen if (autoOpen) { - if (!WTSVirtualChannelManagerOpen(vcm)) + if (!WTSVirtualChannelManagerOpen(hServer)) return FALSE; }