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.
This commit is contained in:
wpaul 1995-07-04 21:58:38 +00:00
parent d739f2f722
commit b4d9e0123b

View File

@ -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);