summaryrefslogtreecommitdiffstats
path: root/libvncserver
diff options
context:
space:
mode:
Diffstat (limited to 'libvncserver')
-rw-r--r--libvncserver/main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libvncserver/main.c b/libvncserver/main.c
index 093f81d..c618280 100644
--- a/libvncserver/main.c
+++ b/libvncserver/main.c
@@ -491,6 +491,21 @@ clientInput(void *data)
pthread_create(&output_thread, NULL, clientOutput, (void *)cl);
while (1) {
+ fd_set fds;
+ struct timeval tv;
+ int n;
+
+ FD_ZERO(&fds);
+ FD_SET(cl->sock, &fds);
+ tv.tv_sec = 60; /* 1 minute */
+ tv.tv_usec = 0;
+ n = select(cl->sock + 1, &fds, NULL, &fds, &tv);
+ if (n < 0) {
+ rfbLogPerror("ReadExact: select");
+ break;
+ }
+ if (n == 0) /* timeout */
+ continue;
rfbProcessClientMessage(cl);
if (cl->sock == -1) {
/* Client has disconnected. */
@@ -521,6 +536,7 @@ listenerRun(void *data)
len = sizeof(peer);
/* TODO: this thread wont die by restarting the server */
+ /* TODO: HTTP is not handled */
while ((client_fd = accept(screen->listenSock,
(struct sockaddr*)&peer, &len)) >= 0) {
cl = rfbNewClient(screen,client_fd);