diff options
author | wpaul <wpaul@FreeBSD.org> | 1995-07-04 21:58:38 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 1995-07-04 21:58:38 +0000 |
commit | 310bc7086f9d07eb11f91ad60198b2757c0412c2 (patch) | |
tree | 74026c69196578756a98d88e5fb356a99a9646de /gnu | |
parent | dde2724ff9cb8768e09dc322c3fdf7d3f10a53ed (diff) | |
download | FreeBSD-src-310bc7086f9d07eb11f91ad60198b2757c0412c2.zip FreeBSD-src-310bc7086f9d07eb11f91ad60198b2757c0412c2.tar.gz |
Oh fer cryin' out loud... While playing with the ypserv code on a different
platform, I discovered the following: if you use ypcat (or anything that
does a yp_all() for that matter) to dump out a map and then hit ^C before
it finishes, ypserv gets hit with a SIGPIPE and dies. (The ypall() service
is implemented using TCP.)
Fix: ignore SIGPIPEs.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/usr.sbin/ypserv/yp_svc.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gnu/usr.sbin/ypserv/yp_svc.c b/gnu/usr.sbin/ypserv/yp_svc.c index b4ce749..8abb349 100644 --- a/gnu/usr.sbin/ypserv/yp_svc.c +++ b/gnu/usr.sbin/ypserv/yp_svc.c @@ -6,7 +6,7 @@ * And thus replied Lpd@NannyMUD: * Who cares? :-) /Peter Eriksson <pen@signum.se> * - * $Id: yp_svc.c,v 1.2 1995/04/05 03:23:38 wpaul Exp $ + * $Id: yp_svc.c,v 1.3 1995/05/30 05:05:37 rgrimes Exp $ */ #include "system.h" @@ -23,6 +23,7 @@ #include <syslog.h> #include <errno.h> #include <paths.h> +#include <signal.h> extern int errno; extern void Perror(); @@ -314,6 +315,12 @@ int main(int argc, char **argv) exit(1); } + /* + * Ignore SIGPIPEs. They can hurt us is someone does a ypcat + * and then hits CTRL-C before it terminales. + */ + signal(SIGPIPE, SIG_IGN); + (void) pmap_unset(YPPROG, YPVERS); if (sunos_4_kludge) (void) pmap_unset(YPPROG, 1); |