From: hadaq Date: Wed, 27 Oct 2010 11:38:17 +0000 (+0000) Subject: signalhandler for SIG_PIPE included, important X-Git-Tag: v6.0~198 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=9f50aa87d43ec4fd6629869c7e12f81c701b285d;p=trbnettools.git signalhandler for SIG_PIPE included, important --- 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) {