summaryrefslogtreecommitdiffstats
path: root/libvncserver
diff options
context:
space:
mode:
Diffstat (limited to 'libvncserver')
-rw-r--r--libvncserver/Makefile.am4
-rw-r--r--libvncserver/httpd.c30
-rw-r--r--libvncserver/rfbserver.c31
3 files changed, 23 insertions, 42 deletions
diff --git a/libvncserver/Makefile.am b/libvncserver/Makefile.am
index 287f1c9..fce398d 100644
--- a/libvncserver/Makefile.am
+++ b/libvncserver/Makefile.am
@@ -47,10 +47,6 @@ if HAVE_LIBZ
ZLIBSRCS = zlib.c zrle.c zrleoutstream.c zrlepalettehelper.c ../common/zywrletemplate.c
if HAVE_LIBJPEG
TIGHTSRCS = tight.c
-else
-if HAVE_LIBPNG
-TIGHTSRCS = tight.c
-endif
endif
endif
diff --git a/libvncserver/httpd.c b/libvncserver/httpd.c
index ad2a51b..3025aae 100644
--- a/libvncserver/httpd.c
+++ b/libvncserver/httpd.c
@@ -59,20 +59,6 @@
#include <tcpd.h>
#endif
-#define connection_close
-#ifndef connection_close
-
-#define NOT_FOUND_STR "HTTP/1.0 404 Not found\r\n\r\n" \
- "<HEAD><TITLE>File Not Found</TITLE></HEAD>\n" \
- "<BODY><H1>File Not Found</H1></BODY>\n"
-
-#define INVALID_REQUEST_STR "HTTP/1.0 400 Invalid Request\r\n\r\n" \
- "<HEAD><TITLE>Invalid Request</TITLE></HEAD>\n" \
- "<BODY><H1>Invalid request</H1></BODY>\n"
-
-#define OK_STR "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"
-
-#else
#define NOT_FOUND_STR "HTTP/1.0 404 Not found\r\nConnection: close\r\n\r\n" \
"<HEAD><TITLE>File Not Found</TITLE></HEAD>\n" \
@@ -82,9 +68,10 @@
"<HEAD><TITLE>Invalid Request</TITLE></HEAD>\n" \
"<BODY><H1>Invalid request</H1></BODY>\n"
-#define OK_STR "HTTP/1.0 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n"
+#define OK_STR "HTTP/1.0 200 OK\r\nConnection: close\r\n\r\n"
+#define OK_STR_HTML "HTTP/1.0 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n"
+
-#endif
static void httpProcessInput(rfbScreenInfoPtr screen);
static rfbBool compareAndSkip(char **ptr, const char *str);
@@ -346,12 +333,6 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
return;
}
- if (strchr(fname+1, '/') != NULL) {
- rfbErr("httpd: asking for file in other directory\n");
- rfbWriteExact(&cl, NOT_FOUND_STR, strlen(NOT_FOUND_STR));
- httpCloseSock(rfbScreen);
- return;
- }
getpeername(rfbScreen->httpSock, (struct sockaddr *)&addr, &addrlen);
rfbLog("httpd: get '%s' for %s\n", fname+1,
@@ -392,7 +373,10 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
return;
}
- rfbWriteExact(&cl, OK_STR, strlen(OK_STR));
+ if(performSubstitutions) /* is the 'index.vnc' file */
+ rfbWriteExact(&cl, OK_STR_HTML, strlen(OK_STR_HTML));
+ else
+ rfbWriteExact(&cl, OK_STR, strlen(OK_STR));
while (1) {
int n = fread(buf, 1, BUF_SIZE-1, fd);
diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c
index 63f21db..b42a5ea 100644
--- a/libvncserver/rfbserver.c
+++ b/libvncserver/rfbserver.c
@@ -494,6 +494,21 @@ rfbClientConnectionGone(rfbClientPtr cl)
if (cl->next)
cl->next->prev = cl->prev;
+ UNLOCK(rfbClientListMutex);
+
+#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
+ if(cl->screen->backgroundLoop != FALSE) {
+ int i;
+ do {
+ LOCK(cl->refCountMutex);
+ i=cl->refCount;
+ if(i>0)
+ WAIT(cl->deleteCond,cl->refCountMutex);
+ UNLOCK(cl->refCountMutex);
+ } while(i>0);
+ }
+#endif
+
if(cl->sock>=0)
close(cl->sock);
@@ -510,21 +525,6 @@ rfbClientConnectionGone(rfbClientPtr cl)
free(cl->beforeEncBuf);
free(cl->afterEncBuf);
-#ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
- if(cl->screen->backgroundLoop != FALSE) {
- int i;
- do {
- LOCK(cl->refCountMutex);
- i=cl->refCount;
- if(i>0)
- WAIT(cl->deleteCond,cl->refCountMutex);
- UNLOCK(cl->refCountMutex);
- } while(i>0);
- }
-#endif
-
- UNLOCK(rfbClientListMutex);
-
if(cl->sock>=0)
FD_CLR(cl->sock,&(cl->screen->allFds));
@@ -569,6 +569,7 @@ rfbClientConnectionGone(rfbClientPtr cl)
TINI_MUTEX(cl->sendMutex);
rfbPrintStats(cl);
+ rfbResetStats(cl);
free(cl);
}