From 34f714bcdc3e2d7a21a9179357dc93f2561301c8 Mon Sep 17 00:00:00 2001 From: dscho Date: Sat, 7 May 2005 13:33:09 +0000 Subject: socketInitDone -> socketState --- libvncserver/sockets.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'libvncserver/sockets.c') diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c index 0aba2dc..9025df8 100755 --- a/libvncserver/sockets.c +++ b/libvncserver/sockets.c @@ -104,10 +104,10 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen) { in_addr_t iface = rfbScreen->listenInterface; - if (rfbScreen->socketInitDone) + if (rfbScreen->socketState!=RFB_SOCKET_INIT) return; - rfbScreen->socketInitDone = TRUE; + rfbScreen->socketState = RFB_SOCKET_READY; if (rfbScreen->inetdSock != -1) { const int one = 1; @@ -176,6 +176,31 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen) } } +void rfbShutdownSockets(rfbScreenInfoPtr rfbScreen) +{ + if (rfbScreen->socketState!=RFB_SOCKET_READY) + return; + + rfbScreen->socketState = RFB_SOCKET_SHUTDOWN; + + if(rfbScreen->inetdSock>-1) { + close(rfbScreen->inetdSock); + FD_CLR(rfbScreen->inetdSock,&rfbScreen->allFds); + rfbScreen->inetdSock=-1; + } + + if(rfbScreen->listenSock>-1) { + close(rfbScreen->listenSock); + FD_CLR(rfbScreen->listenSock,&rfbScreen->allFds); + rfbScreen->listenSock=-1; + } + + if(rfbScreen->udpSock>-1) { + close(rfbScreen->udpSock); + FD_CLR(rfbScreen->udpSock,&rfbScreen->allFds); + rfbScreen->udpSock=-1; + } +} /* * rfbCheckFds is called from ProcessInputEvents to check for input on the RFB -- cgit v1.2.3