]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
block SIGPIPE forever, ignoring does not work as far as I figured out
authorhadaq <hadaq>
Thu, 28 Oct 2010 21:45:11 +0000 (21:45 +0000)
committerhadaq <hadaq>
Thu, 28 Oct 2010 21:45:11 +0000 (21:45 +0000)
trbnetd/server/trbnetd.c

index 3d7576996728205d6279ccc54d6134bbf8bdb608..2bea8dd5a18b9d1c4997dd27c742bab7eb405504 100644 (file)
@@ -353,14 +353,6 @@ extern void trbnetrpcprog_1(struct svc_req *rqstp, register SVCXPRT * transp);
 
 /* ------ MAIN ---------------------------------------------------------- */
 
-static void sigHandler(int sig)
-{
-  if (sig == SIGPIPE) {
-    return;
-  }
-  fprintf(stderr, "caught signal: %d\n");  
-}
-
 void usage(const char *progName)
 {
   fprintf(stdout, "Usage: %s [-h] [-f]\n", progName);
@@ -373,6 +365,7 @@ static pid_t myPid = -1;
 
 int main(int argc, char **argv)
 {
+  sigset_t blockSet;
   register SVCXPRT *transp;
   int daemonMode = 1;
   int opt;
@@ -398,10 +391,10 @@ int main(int argc, char **argv)
     }
   }
   
-  if (signal(SIGPIPE, sigHandler) == SIG_ERR) {
-    fprintf(stderr, "error setting SignalHandler for SIP_PIPE");
-    abort();
-  }
+  /* Block Signal SIGPIPE */
+  sigemptyset(&blockSet);
+  sigaddset(&blockSet, SIGPIPE);
+  sigprocmask(SIG_BLOCK, &blockSet, NULL);
   
   pmap_unset(TRBNETRPCPROG, TRBNETRPCVERS);