wfreerdp-server: improved peer tracking, added ability to disconnect individual peers
authorCorey C <can.of.tuna@gmail.com>
Mon, 8 Oct 2012 19:46:01 +0000 (15:46 -0400)
committerCorey C <can.of.tuna@gmail.com>
Mon, 8 Oct 2012 19:46:01 +0000 (15:46 -0400)
server/Windows/wf_info.c
server/Windows/wf_info.h
server/Windows/wf_peer.c
server/Windows/wf_update.c

index 7180797..da638c5 100644 (file)
@@ -206,7 +206,12 @@ void wf_info_peer_register(wfInfo* wfi, wfPeerContext* context)
                int i;\r
                int peerId;\r
                //todo: reject peer if we have WF_INFO_MAXPEERS connected\r
-               \r
+               if (wfi->peerCount == WF_INFO_MAXPEERS)\r
+               {\r
+                       context->socketClose = TRUE;\r
+                       wf_info_unlock(wfi);\r
+                       return;\r
+               }\r
 \r
                context->info = wfi;\r
                context->updateEvent = CreateEvent(NULL, TRUE, FALSE, NULL);\r
index ff26275..3c7ee3c 100644 (file)
@@ -23,7 +23,7 @@
 #include "wf_interface.h"\r
 \r
 #define WF_INFO_DEFAULT_FPS 24\r
-#define WF_INFO_MAXPEERS 32\r
+#define WF_INFO_MAXPEERS 2\r
 \r
 int wf_info_lock(wfInfo* wfi);\r
 int wf_info_try_lock(wfInfo* wfi, DWORD dwMilliseconds);\r
index 4f9c8c0..c519c02 100644 (file)
@@ -220,6 +220,9 @@ DWORD WINAPI wf_peer_main_loop(LPVOID lpParam)
        client->Initialize(client);\r
        context = (wfPeerContext*) client->context;\r
 \r
+       if (context->socketClose)\r
+               return 0;\r
+\r
        wfi = context->info;\r
 \r
        if (wfi->input_disabled == TRUE)\r
index 9ddd47a..1fef2d1 100644 (file)
@@ -63,10 +63,10 @@ DWORD WINAPI wf_update_thread(LPVOID lpParam)
                                        wf_update_encode(wfi);
 
                                        //printf("Start of parallel sending\n");
-
+                                       index = 0;
                                        for (peerindex = 0; peerindex < wfi->peerCount; peerindex++)
                                        {
-                                               for (index = 0; index < WF_INFO_MAXPEERS; index++)
+                                               for (; index < WF_INFO_MAXPEERS; index++)
                                                {
                                                        if (wfi->peers[index] && wfi->peers[index]->activated)
                                                        {