Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cornell!uw-beaver!rice!sun-spots-request From: munnari!labtam.oz.au!timr@uunet.uu.net (Tim Roper) Newsgroups: comp.sys.sun Subject: Re: /etc/inetd is sensitive to ordering of lines in /etc/inetd.conf Keywords: Software Message-ID: <1419@labtam.oz> Date: 26 Apr 89 01:58:46 GMT References: <8903061946.AA20555@emoryu1.cc.emory.edu> Sender: usenet@rice.edu Organization: Labtam Limited., Melbourne, Australia Lines: 43 Approved: Sun-Spots@rice.edu Original-Date: 5 Apr 89 00:01:17 GMT X-Sun-Spots-Digest: Volume 7, Issue 249, message 20 of 20 I think the attached diff of the 4.3bsd and 4.3bsd-tahoe inetd.c may be of interest. The se_bi flag in the data structure that holds /etc/inetd.conf was not being reset when a non-internal entry was encountered after an internal entry. Hence the problem described in <8903061946.AA20555@emoryu1.cc.emory.edu> I have no idea how SunOS versions relates to these. We encountered the problem with a System V implementation derived from bsd (for which a fix was issued by the TCP supplier well before tahoe was announced). -Tim. *************** *** 593,622 **** if (strcmp(sep->se_server, "internal") == 0) { register struct biltin *bi; for (bi = biltins; bi->bi_service; bi++) if (bi->bi_socktype == sep->se_socktype && strcmp(bi->bi_service, sep->se_service) == 0) break; if (bi->bi_service == 0) { syslog(LOG_ERR, "internal service %s unknown\n", sep->se_service); goto more; } 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) sep->se_argv[argc++] = strdup(arg); while (argc <= MAXARGV) sep->se_argv[argc++] = NULL; return (sep); } freeconfig(cp) register struct servtab *cp; { int i;