mfreerdp-server: fix after changes to virtual channels
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Fri, 28 Feb 2014 17:47:09 +0000 (12:47 -0500)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Fri, 28 Feb 2014 17:47:09 +0000 (12:47 -0500)
server/Mac/mf_peer.c
server/Mac/mfreerdp.c

index 37987c6..93ab74e 100644 (file)
@@ -186,16 +186,13 @@ int mf_peer_context_new(freerdp_peer* client, mfPeerContext* context)
        \r
        context->s = Stream_New(NULL, 0xFFFF);\r
        \r
-       //#ifdef WITH_SERVER_CHANNELS\r
        context->vcm = WTSOpenServerA((LPSTR) client->context);\r
-       //#endif\r
        \r
        mf_info_peer_register(context->info, context);\r
 \r
        return 0;\r
 }\r
 \r
-\r
 /* Called after a peer disconnects */\r
 void mf_peer_context_free(freerdp_peer* client, mfPeerContext* context)\r
 {\r
@@ -221,9 +218,7 @@ void mf_peer_context_free(freerdp_peer* client, mfPeerContext* context)
                        rdpsnd_server_context_free(context->rdpsnd);\r
                //#endif\r
                \r
-               //#ifdef WITH_SERVER_CHANNELS\r
                WTSCloseServer(context->vcm);\r
-               //#endif\r
        }\r
 }\r
 \r
@@ -253,7 +248,6 @@ void mf_peer_init(freerdp_peer* client)
        }\r
 }\r
 \r
-\r
 BOOL mf_peer_post_connect(freerdp_peer* client)\r
 {\r
        mfPeerContext* context = (mfPeerContext*) client->context;\r
@@ -308,7 +302,6 @@ BOOL mf_peer_post_connect(freerdp_peer* client)
        return TRUE;\r
 }\r
 \r
-\r
 BOOL mf_peer_activate(freerdp_peer* client)\r
 {\r
        mfPeerContext* context = (mfPeerContext*) client->context;\r
@@ -319,21 +312,6 @@ BOOL mf_peer_activate(freerdp_peer* client)
        return TRUE;\r
 }\r
 \r
-/*BOOL wf_peer_logon(freerdp_peer* client, SEC_WINNT_AUTH_IDENTITY* identity, BOOL automatic)\r
- {\r
- fprintf(stderr, "PeerLogon\n");\r
\r
- if (automatic)\r
- {\r
- _tprintf(_T("Logon: User:%s Domain:%s Password:%s\n"),\r
- identity->User, identity->Domain, identity->Password);\r
- }\r
\r
\r
- wfreerdp_server_peer_callback_event(((rdpContext*) client->context)->peer->pId, WF_SRV_CALLBACK_EVENT_AUTH);\r
- return TRUE;\r
- }*/\r
-\r
 void mf_peer_synchronize_event(rdpInput* input, UINT32 flags)\r
 {\r
        fprintf(stderr, "Client sent a synchronize event (flags:0x%08X)\n", flags);\r
@@ -408,70 +386,6 @@ void mf_peer_accepted(freerdp_listener* instance, freerdp_peer* client)
        pthread_detach(th);\r
 }\r
 \r
-/*DWORD WINAPI wf_peer_socket_listener(LPVOID lpParam)\r
- {\r
- int i, fds;\r
- int rcount;\r
- int max_fds;\r
- void* rfds[32];\r
- fd_set rfds_set;\r
- wfPeerContext* context;\r
- freerdp_peer* client = (freerdp_peer*) lpParam;\r
\r
- ZeroMemory(rfds, sizeof(rfds));\r
- context = (wfPeerContext*) client->context;\r
\r
- fprintf(stderr, "PeerSocketListener\n");\r
\r
- while (1)\r
- {\r
- rcount = 0;\r
\r
- if (client->GetFileDescriptor(client, rfds, &rcount) != TRUE)\r
- {\r
- fprintf(stderr, "Failed to get peer file descriptor\n");\r
- break;\r
- }\r
\r
- max_fds = 0;\r
- FD_ZERO(&rfds_set);\r
\r
- for (i = 0; i < rcount; i++)\r
- {\r
- fds = (int)(long)(rfds[i]);\r
\r
- if (fds > max_fds)\r
- max_fds = fds;\r
\r
- FD_SET(fds, &rfds_set);\r
- }\r
\r
- if (max_fds == 0)\r
- break;\r
\r
- select(max_fds + 1, &rfds_set, NULL, NULL, NULL);\r
\r
- SetEvent(context->socketEvent);\r
- WaitForSingleObject(context->socketSemaphore, INFINITE);\r
\r
- if (context->socketClose)\r
- break;\r
- }\r
\r
- fprintf(stderr, "Exiting Peer Socket Listener Thread\n");\r
\r
- return 0;\r
- }\r
\r
- void wf_peer_read_settings(freerdp_peer* client)\r
- {\r
- if (!wf_settings_read_string_ascii(HKEY_LOCAL_MACHINE, _T("Software\\FreeRDP\\Server"), _T("CertificateFile"), &(client->settings->CertificateFile)))\r
- client->settings->CertificateFile = _strdup("server.crt");\r
\r
- if (!wf_settings_read_string_ascii(HKEY_LOCAL_MACHINE, _T("Software\\FreeRDP\\Server"), _T("PrivateKeyFile"), &(client->settings->PrivateKeyFile)))\r
- client->settings->PrivateKeyFile = _strdup("server.key");\r
- }*/\r
-\r
 void* mf_peer_main_loop(void* arg)\r
 {\r
        int i;\r
@@ -528,9 +442,7 @@ void* mf_peer_main_loop(void* arg)
                        break;\r
                }\r
                \r
-               //#ifdef WITH_SERVER_CHANNELS\r
                WTSVirtualChannelManagerGetFileDescriptor(context->vcm, rfds, &rcount);\r
-               //#endif\r
                \r
                max_fds = 0;\r
                FD_ZERO(&rfds_set);\r
@@ -566,18 +478,17 @@ void* mf_peer_main_loop(void* arg)
                        fprintf(stderr, "Failed to check freerdp file descriptor\n");\r
                        break;\r
                }\r
+               \r
                if ((mf_peer_check_fds(client)) != TRUE)\r
                {\r
                        fprintf(stderr, "Failed to check mfreerdp file descriptor\n");\r
                        break;\r
                }\r
                \r
-               \r
-               //#ifdef WITH_SERVER_CHANNELS\r
                if (WTSVirtualChannelManagerCheckFileDescriptor(context->vcm) != TRUE)\r
+               {\r
                        break;\r
-               //#endif\r
-               \r
+               }\r
        }\r
        \r
        fprintf(stderr, "Client %s disconnected.\n", client->local ? "(local)" : client->hostname);\r
index e1679d3..2ac3122 100644 (file)
 #include <CoreGraphics/CGEvent.h>
 
 #include <winpr/crt.h>
+#include <winpr/wtsapi.h>
 
+#include <freerdp/freerdp.h>
 #include <freerdp/constants.h>
-//#include <freerdp/utils/sleep.h>
-//#include <freerdp/utils/memory.h>
+#include <freerdp/channels/wtsvc.h>
+#include <freerdp/channels/channels.h>
 
 #include "mfreerdp.h"
 #include "mf_peer.h"
@@ -107,6 +109,8 @@ int main(int argc, char* argv[])
 
        signal(SIGPIPE, SIG_IGN);
 
+       WTSRegisterWtsApiFunctionTable(FreeRDP_InitWtsApi());
+       
        instance = freerdp_listener_new();
 
        instance->PeerAccepted = mf_peer_accepted;