Skip to content

Commit 1b08b96

Browse files
committed
libvncserver: fix HTTP shutdown without httpDir
1 parent 540332b commit 1b08b96

3 files changed

Lines changed: 38 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,7 @@ if(WITH_LIBVNCSERVER)
701701
list(APPEND SIMPLETESTS
702702
cargstest
703703
copyrecttest
704+
http_no_dir_shutdown
704705
)
705706
endif(WITH_LIBVNCSERVER)
706707

@@ -758,6 +759,7 @@ endif(LIBVNCSERVER_WITH_WEBSOCKETS AND WITH_LIBVNCSERVER)
758759

759760
if(WITH_LIBVNCSERVER)
760761
add_test(NAME cargs COMMAND test_cargstest)
762+
add_test(NAME http_no_dir_shutdown COMMAND test_http_no_dir_shutdown)
761763
endif(WITH_LIBVNCSERVER)
762764
if(UNIX)
763765
if(WITH_LIBVNCSERVER)

src/libvncserver/httpd.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ rfbHttpInitSockets(rfbScreenInfoPtr rfbScreen)
137137
}
138138

139139
void rfbHttpShutdownSockets(rfbScreenInfoPtr rfbScreen) {
140+
if (!rfbScreen->httpInitDone)
141+
return;
142+
143+
rfbScreen->httpInitDone = FALSE;
144+
140145
if(rfbScreen->httpSock>-1) {
141146
FD_CLR(rfbScreen->httpSock,&rfbScreen->allFds);
142147
rfbCloseSocket(rfbScreen->httpSock);

test/http_no_dir_shutdown.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <rfb/rfb.h>
2+
3+
#include <stdlib.h>
4+
5+
int main(int argc, char **argv)
6+
{
7+
rfbScreenInfoPtr screen;
8+
char *fb;
9+
10+
screen = rfbGetScreen(&argc, argv, 16, 16, 8, 3, 4);
11+
if (!screen)
12+
return 1;
13+
14+
fb = (char *)calloc(16 * 16 * 4, 1);
15+
if (!fb) {
16+
rfbScreenCleanup(screen);
17+
return 1;
18+
}
19+
20+
screen->frameBuffer = fb;
21+
screen->port = 0;
22+
screen->ipv6port = 0;
23+
screen->httpDir = NULL;
24+
25+
rfbInitServer(screen);
26+
rfbShutdownServer(screen, TRUE);
27+
rfbScreenCleanup(screen);
28+
free(fb);
29+
30+
return 0;
31+
}

0 commit comments

Comments
 (0)