Apply by doing cd /usr/src/usr.sbin/inetd patch -p0 < inetd.patch Then rebuild inetd make make install And restart inetd or reboot your machine. Index: inetd.c =================================================================== RCS file: /cvs/src/usr.sbin/inetd/inetd.c,v retrieving revision 1.46 retrieving revision 1.49 diff -u -r1.46 -r1.49 --- inetd.c 1998/03/12 00:19:16 1.46 +++ inetd.c 1998/07/15 17:51:14 1.49 @@ -1,4 +1,4 @@ -/* $OpenBSD: inetd.c,v 1.46 1998/03/12 00:19:16 deraadt Exp $ */ +/* $OpenBSD: inetd.c,v 1.49 1998/07/15 17:51:14 deraadt Exp $ */ /* $NetBSD: inetd.c,v 1.11 1996/02/22 11:14:41 mycroft Exp $ */ /* * Copyright (c) 1983,1991 The Regents of the University of California. @@ -41,7 +41,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)inetd.c 5.30 (Berkeley) 6/3/91";*/ -static char rcsid[] = "$OpenBSD: inetd.c,v 1.46 1998/03/12 00:19:16 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: inetd.c,v 1.49 1998/07/15 17:51:14 deraadt Exp $"; #endif /* not lint */ /* @@ -382,10 +382,13 @@ #endif memset((char *)&sa, 0, sizeof(sa)); - sa.sa_mask = SIGBLOCK; + sigemptyset(&sa.sa_mask); + sigaddset(&sa.sa_mask, SIGALRM); + sigaddset(&sa.sa_mask, SIGCHLD); + sigaddset(&sa.sa_mask, SIGHUP); sa.sa_handler = retry; sigaction(SIGALRM, &sa, NULL); - config(0); + config(SIGHUP); sa.sa_handler = config; sigaction(SIGHUP, &sa, NULL); sa.sa_handler = reapchild; @@ -409,7 +412,7 @@ } for (;;) { - int n, ctrl; + int n, ctrl = -1; fd_set readable; if (nsock == 0) { @@ -493,6 +496,9 @@ syslog(LOG_ERR, "%s/%s server failing (looping), service terminated", sep->se_service, sep->se_proto); + if (!sep->se_wait && + sep->se_socktype == SOCK_STREAM) + close(ctrl); FD_CLR(sep->se_fd, &allsock); (void) close(sep->se_fd); sep->se_fd = -1; @@ -1060,7 +1066,7 @@ if (defhost) free(defhost); defhost = newstr("*"); if (fconfig != NULL) { - fseek(fconfig, 0L, L_SET); + fseek(fconfig, 0L, SEEK_SET); return (1); } fconfig = fopen(CONFIG, "r");