svn commit: r184459 - head/usr.sbin/rpc.yppasswdd

Rong-En Fan rafan at FreeBSD.org
Wed Oct 29 18:54:32 PDT 2008


Author: rafan
Date: Thu Oct 30 01:54:31 2008
New Revision: 184459
URL: http://svn.freebsd.org/changeset/base/184459

Log:
  - Whenever a password/shell is changed via rpc.yppasswdd, the daemon leaves
    one zombie process because it does not do the cleanup. For a long running
    NIS/YP server, it will have lots of zombie processes on it. Fix that by
    ignoring the SIGCHLD signal since we don't really care about the exit
    status in this case.
  
  PR:		bin/91980
  Reported by:	Arjan van der Velde <dj_noresult at hotmail.com>
  Submitted by:	Jui-Nan Lin" <jnlin at csie.nctu.edu.tw>
  Reviewed by:	delphij
  MFC after:	1 month

Modified:
  head/usr.sbin/rpc.yppasswdd/yppasswdd_main.c

Modified: head/usr.sbin/rpc.yppasswdd/yppasswdd_main.c
==============================================================================
--- head/usr.sbin/rpc.yppasswdd/yppasswdd_main.c	Thu Oct 30 00:19:19 2008	(r184458)
+++ head/usr.sbin/rpc.yppasswdd/yppasswdd_main.c	Thu Oct 30 01:54:31 2008	(r184459)
@@ -165,6 +165,7 @@ main(int argc, char *argv[])
 	struct sockaddr_in saddr;
 	socklen_t asize = sizeof (saddr);
 	struct netconfig *nconf;
+	struct sigaction sa;
 	void *localhandle;
 	int ch;
 	char *mastername;
@@ -268,6 +269,9 @@ the %s domain -- aborting", yppasswd_dom
 		}
 	}
 	openlog("rpc.yppasswdd", LOG_PID, LOG_DAEMON);
+	memset(&sa, 0, sizeof(sa));
+	sa.sa_flags = SA_NOCLDWAIT;
+	sigaction(SIGCHLD, &sa, NULL);
 
 	rpcb_unset(YPPASSWDPROG, YPPASSWDVERS, NULL);
 	rpcb_unset(MASTER_YPPASSWDPROG, MASTER_YPPASSWDVERS, NULL);


More information about the svn-src-head mailing list