diff --git a/main.c b/main.c index e394a48..6eded98 100644 --- a/main.c +++ b/main.c @@ -638,6 +638,8 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv, /* initialize client list and iterator mutex */ rfbClientListInit(rfbScreen); + rfbScreen->ignoreSIGPIPE = TRUE; + return(rfbScreen); } @@ -747,6 +749,8 @@ void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen) #endif } +static void ignoreSignal(int dummy) {} + void rfbInitServer(rfbScreenInfoPtr rfbScreen) { #ifdef WIN32 @@ -755,6 +759,8 @@ void rfbInitServer(rfbScreenInfoPtr rfbScreen) #endif rfbInitSockets(rfbScreen); httpInitSockets(rfbScreen); + if(rfbScreen->ignoreSIGPIPE) + signal(SIGPIPE,ignoreSignal); } #ifndef LIBVNCSERVER_HAVE_GETTIMEOFDAY diff --git a/rfb/rfb.h b/rfb/rfb.h index f56e692..a571235 100644 --- a/rfb/rfb.h +++ b/rfb/rfb.h @@ -274,6 +274,7 @@ typedef struct _rfbScreenInfo rfbBool backgroundLoop; #endif + rfbBool ignoreSIGPIPE; } rfbScreenInfo, *rfbScreenInfoPtr;