[comp.bugs.4bsd.ucb-fixes] V1.20

bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic) (04/23/87)

Index: etc/inetd/inetd.c 4.3BSD FIX

Description:
	New servers added to inetd.conf won't exec.

Fix:
*** inetd.c.4.3	Thu Apr 23 08:10:06 1987
--- /usr/src/etc/inetd.c	Tue Aug 19 09:27:38 1986
***************
*** 11,17 ****
  #endif not lint
  
  #ifndef lint
! static char sccsid[] = "@(#)inetd.c	5.6 (Berkeley) 4/29/86";
  #endif not lint
  
  /*
--- 11,17 ----
  #endif not lint
  
  #ifndef lint
! static char sccsid[] = "@(#)inetd.c	5.7 (Berkeley) 8/19/86";
  #endif not lint
  
  /*
***************
*** 394,401 ****
  				SWAP(sep->se_argv[i], cp->se_argv[i]);
  			sigsetmask(omask);
  			freeconfig(cp);
! 		} else
  			sep = enter(cp);
  		sep->se_checked = 1;
  		sp = getservbyname(sep->se_service, sep->se_proto);
  		if (sp == 0) {
--- 394,406 ----
  				SWAP(sep->se_argv[i], cp->se_argv[i]);
  			sigsetmask(omask);
  			freeconfig(cp);
! 			if (debug)
! 				print_service("REDO", sep);
! 		} else {
  			sep = enter(cp);
+ 			if (debug)
+ 				print_service("ADD ", sep);
+ 		}
  		sep->se_checked = 1;
  		sp = getservbyname(sep->se_service, sep->se_proto);
  		if (sp == 0) {
***************
*** 429,434 ****
--- 434,441 ----
  			nsock--;
  			(void) close(sep->se_fd);
  		}
+ 		if (debug)
+ 			print_service("FREE", sep);
  		freeconfig(sep);
  		free((char *)sep);
  	}
***************
*** 575,581 ****
  		}
  		sep->se_bi = bi;
  		sep->se_wait = bi->bi_wait;
! 	}
  	argc = 0;
  	for (arg = skip(&cp); cp; arg = skip(&cp))
  		if (argc < MAXARGV)
--- 582,589 ----
  		}
  		sep->se_bi = bi;
  		sep->se_wait = bi->bi_wait;
! 	} else
! 		sep->se_bi = NULL;
  	argc = 0;
  	for (arg = skip(&cp); cp; arg = skip(&cp))
  		if (argc < MAXARGV)
***************
*** 917,920 ****
--- 925,942 ----
  		return;
  	sprintf(buffer, "%s\r", ctime(&clock));
  	(void) sendto(s, buffer, strlen(buffer), 0, &sa, sizeof(sa));
+ }
+ 
+ /*
+  * print_service:
+  *	Dump relevant information to stderr
+  */
+ print_service(action, sep)
+ 	char *action;
+ 	struct servtab *sep;
+ {
+ 	fprintf(stderr,
+ 	    "%s: %s proto=%s, wait=%d, user=%s builtin=%x server=%s\n",
+ 	    action, sep->se_service, sep->se_proto,
+ 	    sep->se_wait, sep->se_user, sep->se_bi, sep->se_server);
  }