diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c index b7ea8c1..c7dc35f 100644 --- a/libvncserver/sockets.c +++ b/libvncserver/sockets.c @@ -260,7 +260,8 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) if (rfbScreen->listenSock != -1 && FD_ISSET(rfbScreen->listenSock, &fds)) { - rfbProcessNewConnection(rfbScreen); + if (!rfbProcessNewConnection(rfbScreen)) + return -1; FD_CLR(rfbScreen->listenSock, &fds); if (--nfds == 0) @@ -322,7 +323,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) return result; } -void +rfbBool rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) { const int one = 1; @@ -333,19 +334,19 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) if ((sock = accept(rfbScreen->listenSock, (struct sockaddr *)&addr, &addrlen)) < 0) { rfbLogPerror("rfbCheckFds: accept"); - return -1; + return FALSE; } if(!rfbSetNonBlocking(sock)) { closesocket(sock); - return -1; + return FALSE; } if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one)) < 0) { rfbLogPerror("rfbCheckFds: setsockopt"); closesocket(sock); - return -1; + return FALSE; } #ifdef USE_LIBWRAP @@ -354,13 +355,15 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) rfbLog("Rejected connection from client %s\n", inet_ntoa(addr.sin_addr)); closesocket(sock); - return -1; + return FALSE; } #endif rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr)); rfbNewClient(rfbScreen,sock); + + return TRUE; } diff --git a/rfb/rfb.h b/rfb/rfb.h index 12c5278..c16336d 100644 --- a/rfb/rfb.h +++ b/rfb/rfb.h @@ -1007,7 +1007,7 @@ extern rfbBool rfbSendTextChatMessage(rfbClientPtr cl, uint32_t length, char *bu * Additions for Qt event loop integration * Original idea taken from vino. */ -void rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen); +rfbBool rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen); rfbBool rfbUpdateClient(rfbClientPtr cl);