ignore SIGPIPE by default; it is handled via EPIPE

pull/1/head
dscho 21 years ago
parent c4a0223e38
commit d58d3af1ce

@ -638,6 +638,8 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv,
/* initialize client list and iterator mutex */ /* initialize client list and iterator mutex */
rfbClientListInit(rfbScreen); rfbClientListInit(rfbScreen);
rfbScreen->ignoreSIGPIPE = TRUE;
return(rfbScreen); return(rfbScreen);
} }
@ -747,6 +749,8 @@ void rfbScreenCleanup(rfbScreenInfoPtr rfbScreen)
#endif #endif
} }
static void ignoreSignal(int dummy) {}
void rfbInitServer(rfbScreenInfoPtr rfbScreen) void rfbInitServer(rfbScreenInfoPtr rfbScreen)
{ {
#ifdef WIN32 #ifdef WIN32
@ -755,6 +759,8 @@ void rfbInitServer(rfbScreenInfoPtr rfbScreen)
#endif #endif
rfbInitSockets(rfbScreen); rfbInitSockets(rfbScreen);
httpInitSockets(rfbScreen); httpInitSockets(rfbScreen);
if(rfbScreen->ignoreSIGPIPE)
signal(SIGPIPE,ignoreSignal);
} }
#ifndef LIBVNCSERVER_HAVE_GETTIMEOFDAY #ifndef LIBVNCSERVER_HAVE_GETTIMEOFDAY

@ -274,6 +274,7 @@ typedef struct _rfbScreenInfo
rfbBool backgroundLoop; rfbBool backgroundLoop;
#endif #endif
rfbBool ignoreSIGPIPE;
} rfbScreenInfo, *rfbScreenInfoPtr; } rfbScreenInfo, *rfbScreenInfoPtr;

Loading…
Cancel
Save