From c231e392fe10817ec094571d20e292e2edd81d9c Mon Sep 17 00:00:00 2001 From: hadaq Date: Thu, 28 Oct 2010 21:45:11 +0000 Subject: [PATCH] block SIGPIPE forever, ignoring does not work as far as I figured out --- trbnetd/server/trbnetd.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) 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); -- 2.43.0