From 9f50aa87d43ec4fd6629869c7e12f81c701b285d Mon Sep 17 00:00:00 2001 From: hadaq Date: Wed, 27 Oct 2010 11:38:17 +0000 Subject: [PATCH] signalhandler for SIG_PIPE included, important --- trbnetd/server/trbnetd.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/trbnetd/server/trbnetd.c b/trbnetd/server/trbnetd.c index 5019e46..3d75769 100644 --- a/trbnetd/server/trbnetd.c +++ b/trbnetd/server/trbnetd.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -352,6 +353,14 @@ 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); @@ -389,19 +398,12 @@ int main(int argc, char **argv) } } - pmap_unset(TRBNETRPCPROG, TRBNETRPCVERS); - - transp = svcudp_create(RPC_ANYSOCK); - if (transp == NULL) { - fprintf(stderr, "%s", "cannot create udp service."); - exit(EXIT_FAILURE); - } - if (!svc_register - (transp, TRBNETRPCPROG, TRBNETRPCVERS, trbnetrpcprog_1, IPPROTO_UDP)) { - fprintf(stderr, "%s", - "unable to register (TRBNETRPCPROG, TRBNETRPCVERS, udp)."); - exit(EXIT_FAILURE); + if (signal(SIGPIPE, sigHandler) == SIG_ERR) { + fprintf(stderr, "error setting SignalHandler for SIP_PIPE"); + abort(); } + + pmap_unset(TRBNETRPCPROG, TRBNETRPCVERS); transp = svctcp_create(RPC_ANYSOCK, 0, 0); if (transp == NULL) { -- 2.43.0