From: hadaq Date: Thu, 28 Oct 2010 21:45:11 +0000 (+0000) Subject: block SIGPIPE forever, ignoring does not work as far as I figured out X-Git-Tag: v6.0~195 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=c231e392fe10817ec094571d20e292e2edd81d9c;p=trbnettools.git block SIGPIPE forever, ignoring does not work as far as I figured out --- diff --git a/trbnetd/server/trbnetd.c b/trbnetd/server/trbnetd.c index 3d75769..2bea8dd 100644 --- a/trbnetd/server/trbnetd.c +++ b/trbnetd/server/trbnetd.c @@ -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);