From 131ede28a74bb18037f5bfbbe1f9ac8f26546544 Mon Sep 17 00:00:00 2001 From: dscho Date: Thu, 13 Jun 2002 17:41:40 +0000 Subject: [PATCH] pthread fix --- main.c | 1 + rfbserver.c | 11 ++++++++--- sockets.c | 18 ++++++++++++------ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/main.c b/main.c index 13ad416..f1f800a 100644 --- a/main.c +++ b/main.c @@ -328,6 +328,7 @@ listenerRun(void *data) if (cl && !cl->onHold ) rfbStartOnHoldClient(cl); } + return(NULL); } void diff --git a/rfbserver.c b/rfbserver.c index f936ccc..11aeff6 100644 --- a/rfbserver.c +++ b/rfbserver.c @@ -448,9 +448,14 @@ rfbProcessClientProtocolVersion(cl) pv[sz_rfbProtocolVersionMsg] = 0; if (sscanf(pv,rfbProtocolVersionFormat,&major_,&minor_) != 2) { - rfbLog("rfbProcessClientProtocolVersion: not a valid RFB client\n"); - rfbCloseClient(cl); - return; + char name[1024]; + if(sscanf(pv,"RFB %03d.%03d %1024s\n",&major_,&minor_,name) != 3) { + rfbLog("rfbProcessClientProtocolVersion: not a valid RFB client\n"); + rfbCloseClient(cl); + return; + } + free(cl->host); + cl->host=strdup(name); } rfbLog("Protocol version %d.%d\n", major_, minor_); diff --git a/sockets.c b/sockets.c index 350ff44..e27ddc6 100644 --- a/sockets.c +++ b/sockets.c @@ -309,12 +309,18 @@ rfbCloseClient(cl) rfbClientPtr cl; { LOCK(cl->updateMutex); - if (cl->sock != -1) { - FD_CLR(cl->sock,&(cl->screen->allFds)); - shutdown(cl->sock,SHUT_RDWR); - close(cl->sock); - cl->sock = -1; - } +#ifdef HAVE_PTHREADS + if (cl->sock != -1) +#endif + { + FD_CLR(cl->sock,&(cl->screen->allFds)); + if(cl->sock==cl->screen->maxFd) + while(!FD_ISSET(cl->screen->maxFd,&(cl->screen->allFds))) + cl->screen->maxFd--; + shutdown(cl->sock,SHUT_RDWR); + close(cl->sock); + cl->sock = -1; + } TSIGNAL(cl->updateCond); UNLOCK(cl->updateMutex); }