diff options
Diffstat (limited to 'libvncserver/rfbserver.c')
-rw-r--r-- | libvncserver/rfbserver.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c index 7c620c8..8fab930 100644 --- a/libvncserver/rfbserver.c +++ b/libvncserver/rfbserver.c @@ -98,6 +98,7 @@ static MUTEX(rfbClientListMutex); struct rfbClientIterator { rfbClientPtr next; rfbScreenInfoPtr screen; + rfbBool closedToo; }; void @@ -120,6 +121,18 @@ rfbGetClientIterator(rfbScreenInfoPtr rfbScreen) (rfbClientIteratorPtr)malloc(sizeof(struct rfbClientIterator)); i->next = NULL; i->screen = rfbScreen; + i->closedToo = FALSE; + return i; +} + +rfbClientIteratorPtr +rfbGetClientIteratorWithClosed(rfbScreenInfoPtr rfbScreen) +{ + rfbClientIteratorPtr i = + (rfbClientIteratorPtr)malloc(sizeof(struct rfbClientIterator)); + i->next = NULL; + i->screen = rfbScreen; + i->closedToo = TRUE; return i; } @@ -152,8 +165,9 @@ rfbClientIteratorNext(rfbClientIteratorPtr i) } #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD - while(i->next && i->next->sock<0) - i->next = i->next->next; + if(!i->closedToo) + while(i->next && i->next->sock<0) + i->next = i->next->next; if(i->next) rfbIncrClientRef(i->next); #endif |