diff --git a/main.c b/main.c index e394a48a6054f3f32b1b51a7b469370771fe1262..6eded9839e693f1ac2ce1ef33a96724783085e52 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 f56e6920a9c840dcf8d2f4f6e0cc5e4a511ca440..a571235f2a4e18a59231a0f9c917b5f117cbbeba 100644 --- a/rfb/rfb.h +++ b/rfb/rfb.h @@ -274,6 +274,7 @@ typedef struct _rfbScreenInfo rfbBool backgroundLoop; #endif + rfbBool ignoreSIGPIPE; } rfbScreenInfo, *rfbScreenInfoPtr;