diff options
author | Christian Beier <dontmind@freeshell.org> | 2009-11-05 16:25:30 +0100 |
---|---|---|
committer | Johannes Schindelin <johannes.schindelin@gmx.de> | 2009-11-11 17:14:10 +0100 |
commit | 9ed410668c19ddd6b2c12709d6a5383e7f7a6e07 (patch) | |
tree | c58c13c3f035bd95c0b958388e2c8b337c19b0f3 | |
parent | d4c43c1b7316fdaa03e4e1b14ef21f502a1c8be9 (diff) | |
download | libvncserver-9ed410668c19ddd6b2c12709d6a5383e7f7a6e07.zip libvncserver-9ed410668c19ddd6b2c12709d6a5383e7f7a6e07.tar.gz |
Fix checks for socket values, 0 is a legal value.
To make this work, we also have to initialize sockets
to a default value of -1.
Also close a client listen socket if it's open.
Signed-off-by: Christian Beier <dontmind@freeshell.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
-rw-r--r-- | libvncclient/listen.c | 2 | ||||
-rw-r--r-- | libvncclient/rfbproto.c | 2 | ||||
-rw-r--r-- | libvncclient/vncviewer.c | 7 | ||||
-rw-r--r-- | libvncserver/rfbserver.c | 2 |
4 files changed, 8 insertions, 5 deletions
diff --git a/libvncclient/listen.c b/libvncclient/listen.c index d1e98ae..7a0501c 100644 --- a/libvncclient/listen.c +++ b/libvncclient/listen.c @@ -127,7 +127,7 @@ listenForIncomingConnectionsNoFork(rfbClient* client, int timeout) client->listenSpecified = TRUE; - if (! client->listenSock) + if (client->listenSock < 0) { client->listenSock = ListenAtTcpPort(client->listenPort); diff --git a/libvncclient/rfbproto.c b/libvncclient/rfbproto.c index 57a3a54..76b501a 100644 --- a/libvncclient/rfbproto.c +++ b/libvncclient/rfbproto.c @@ -388,7 +388,7 @@ ConnectToRFBServer(rfbClient* client,const char *hostname, int port) fclose(rec->file); return FALSE; } - client->sock = 0; + client->sock = -1; return TRUE; } diff --git a/libvncclient/vncviewer.c b/libvncclient/vncviewer.c index b5fb420..0361827 100644 --- a/libvncclient/vncviewer.c +++ b/libvncclient/vncviewer.c @@ -190,7 +190,8 @@ rfbClient* rfbGetClient(int bitsPerSample,int samplesPerPixel, #ifdef LIBVNCSERVER_WITH_CLIENT_TLS client->tlsSession = NULL; #endif - + client->sock = -1; + client->listenSock = -1; return client; } @@ -334,8 +335,10 @@ void rfbClientCleanup(rfbClient* client) { #endif FreeTLS(client); - if (client->sock > 0) + if (client->sock >= 0) close(client->sock); + if (client->listenSock >= 0) + close(client->listenSock); free(client->desktopName); free(client->serverHost); free(client); diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c index bb9c665..465d767 100644 --- a/libvncserver/rfbserver.c +++ b/libvncserver/rfbserver.c @@ -485,7 +485,7 @@ rfbClientConnectionGone(rfbClientPtr cl) if (cl->next) cl->next->prev = cl->prev; - if(cl->sock>0) + if(cl->sock>=0) close(cl->sock); if (cl->scaledScreen!=NULL) |