From d58d3af1ce091dfeba4d6ed3a2ad5e629678ead5 Mon Sep 17 00:00:00 2001
From: dscho <dscho>
Date: Wed, 21 Jan 2004 01:17:47 +0000
Subject: [PATCH] ignore SIGPIPE by default; it is handled via EPIPE

---
 main.c    | 6 ++++++
 rfb/rfb.h | 1 +
 2 files changed, 7 insertions(+)

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;
 
 
-- 
2.18.1