Modified GetEventHandles of listener
authorArmin Novak <armin.novak@thincast.com>
Tue, 21 Apr 2015 10:09:44 +0000 (12:09 +0200)
committerArmin Novak <armin.novak@thincast.com>
Tue, 21 Apr 2015 10:09:44 +0000 (12:09 +0200)
Now using nCount as in and out argument.
When called, set nCount to the number of available handles.
This value is checked and an error returned, if not enough
handles are available.

libfreerdp/core/listener.c
server/Sample/sfreerdp.c
server/shadow/shadow_server.c

index 88be8ed..d855147 100644 (file)
@@ -258,11 +258,15 @@ static BOOL freerdp_listener_get_fds(freerdp_listener* instance, void** rfds, in
 int freerdp_listener_get_event_handles(freerdp_listener* instance, HANDLE* events, DWORD* nCount)
 {
        int index;
+       DWORD count = *nCount;
        rdpListener* listener = (rdpListener*) instance->listener;
 
        if (listener->num_sockfds < 1)
                return -1;
 
+       if (listener->num_sockfds > count)
+               return -1;
+
        for (index = 0; index < listener->num_sockfds; index++)
        {
                events[*nCount] = listener->events[index];
index 19ee553..4c8b3d0 100644 (file)
@@ -744,7 +744,7 @@ static void test_server_mainloop(freerdp_listener* instance)
 
        while (1)
        {
-               count = 0;
+               count = 32;
 
                if (instance->GetEventHandles(instance, handles, &count))
                {
index a0c560a..38cbfbf 100644 (file)
@@ -313,7 +313,7 @@ void* shadow_server_thread(rdpShadowServer* server)
 
        while (1)
        {
-               nCount = 0;
+               nCount = 32;
 
                if (listener->GetEventHandles(listener, events, &nCount) < 0)
                {