summaryrefslogtreecommitdiff
path: root/usr.sbin/inetd/inetd.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/inetd/inetd.c')
-rw-r--r--usr.sbin/inetd/inetd.c130
1 files changed, 15 insertions, 115 deletions
diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c
index 124d8042ac9a5..5d55861ac063c 100644
--- a/usr.sbin/inetd/inetd.c
+++ b/usr.sbin/inetd/inetd.c
@@ -42,7 +42,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)from: inetd.c 8.4 (Berkeley) 4/13/94";
#endif
static const char rcsid[] =
- "$Id: inetd.c,v 1.45 1999/01/02 16:04:19 des Exp $";
+ "$Id: inetd.c,v 1.39 1998/08/17 06:16:59 jb Exp $";
#endif /* not lint */
/*
@@ -172,7 +172,6 @@ int maxcpm = MAXCHILD;
struct servent *sp;
struct rpcent *rpc;
struct in_addr bind_address;
-int signalpipe[2];
struct servtab {
char *se_service; /* name of service */
@@ -218,9 +217,7 @@ struct servtab {
void chargen_dg __P((int, struct servtab *));
void chargen_stream __P((int, struct servtab *));
void close_sep __P((struct servtab *));
-void flag_signal __P((char));
-void flag_config __P((int));
-void config __P((void));
+void config __P((int));
void daytime_dg __P((int, struct servtab *));
void daytime_stream __P((int, struct servtab *));
void discard_dg __P((int, struct servtab *));
@@ -231,19 +228,16 @@ void endconfig __P((void));
struct servtab *enter __P((struct servtab *));
void freeconfig __P((struct servtab *));
struct servtab *getconfigent __P((void));
-void ident_stream __P((int, struct servtab *));
void machtime_dg __P((int, struct servtab *));
void machtime_stream __P((int, struct servtab *));
char *newstr __P((char *));
char *nextline __P((FILE *));
void print_service __P((char *, struct servtab *));
void addchild __P((struct servtab *, int));
-void flag_reapchild __P((int));
-void reapchild __P((void));
+void reapchild __P((int));
void enable __P((struct servtab *));
void disable __P((struct servtab *));
-void flag_retry __P((int));
-void retry __P((void));
+void retry __P((int));
int setconfig __P((void));
void setup __P((struct servtab *));
char *sskip __P((char **));
@@ -268,7 +262,7 @@ struct biltin {
{ "discard", SOCK_STREAM, 1, 0, discard_stream },
{ "discard", SOCK_DGRAM, 0, 0, discard_dg },
- /* Return 32 bit time since 1900 */
+ /* Return 32 bit time since 1970 */
{ "time", SOCK_STREAM, 0, 0, machtime_stream },
{ "time", SOCK_DGRAM, 0, 0, machtime_dg },
@@ -282,8 +276,6 @@ struct biltin {
{ "tcpmux", SOCK_STREAM, 1, 0, (void (*)())tcpmux },
- { "ident", SOCK_STREAM, 1, 0, ident_stream },
-
{ NULL }
};
@@ -416,12 +408,12 @@ main(argc, argv, envp)
sigaddset(&sa.sa_mask, SIGALRM);
sigaddset(&sa.sa_mask, SIGCHLD);
sigaddset(&sa.sa_mask, SIGHUP);
- sa.sa_handler = flag_retry;
+ sa.sa_handler = retry;
sigaction(SIGALRM, &sa, (struct sigaction *)0);
- config();
- sa.sa_handler = flag_config;
+ config(SIGHUP);
+ sa.sa_handler = config;
sigaction(SIGHUP, &sa, (struct sigaction *)0);
- sa.sa_handler = flag_reapchild;
+ sa.sa_handler = reapchild;
sigaction(SIGCHLD, &sa, (struct sigaction *)0);
sa.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &sa, &sapipe);
@@ -436,13 +428,6 @@ main(argc, argv, envp)
(void)setenv("inetd_dummy", dummy, 1);
}
- if (pipe(signalpipe) != 0) {
- syslog(LOG_ERR, "pipe: %%m");
- exit(EX_OSERR);
- }
- FD_SET(signalpipe[0], &allsock);
- if (signalpipe[0]>maxsock) maxsock = signalpipe[0];
-
for (;;) {
int n, ctrl;
fd_set readable;
@@ -462,34 +447,6 @@ main(argc, argv, envp)
}
continue;
}
- /* handle any queued signal flags */
- if (FD_ISSET(signalpipe[0], &readable)) {
- int n;
- if (ioctl(signalpipe[0], FIONREAD, &n) != 0) {
- syslog(LOG_ERR, "ioctl: %m");
- exit(EX_OSERR);
- }
- while (--n >= 0) {
- char c;
- if (read(signalpipe[0], &c, 1) != 1) {
- syslog(LOG_ERR, "read: %m");
- exit(EX_OSERR);
- }
- if (debug)
- warnx("Handling signal flag %c", c);
- switch(c) {
- case 'A': /* sigalrm */
- retry();
- break;
- case 'C': /* sigchld */
- reapchild();
- break;
- case 'H': /* sighup */
- config();
- break;
- }
- }
- }
for (sep = servtab; n && sep; sep = sep->se_next)
if (sep->se_fd != -1 && FD_ISSET(sep->se_fd, &readable)) {
n--;
@@ -691,19 +648,6 @@ main(argc, argv, envp)
}
/*
- * Add a signal flag to the signal flag queue for later handling
- */
-
-void flag_signal(c)
- char c;
-{
- if (write(signalpipe[1], &c, 1) != 1) {
- syslog(LOG_ERR, "write: %m");
- exit(EX_OSERR);
- }
-}
-
-/*
* Record a new child pid for this service. If we've reached the
* limit on children, then stop accepting incoming requests.
*/
@@ -730,15 +674,9 @@ addchild(struct servtab *sep, pid_t pid)
*/
void
-flag_reapchild(signo)
+reapchild(signo)
int signo;
{
- flag_signal('C');
-}
-
-void
-reapchild()
-{
int k, status;
pid_t pid;
struct servtab *sep;
@@ -768,14 +706,9 @@ reapchild()
}
void
-flag_config(signo)
+config(signo)
int signo;
{
- flag_signal('H');
-}
-
-void config()
-{
struct servtab *sep, *new, **sepp;
long omask;
@@ -952,15 +885,9 @@ unregisterrpc(sep)
}
void
-flag_retry(signo)
+retry(signo)
int signo;
{
- flag_signal('A');
-}
-
-void
-retry()
-{
struct servtab *sep;
timingout = 0;
@@ -1523,33 +1450,6 @@ inetd_setproctitle(a, s)
*/
#define BUFSIZE 8192
-#define IDENT_RESPONSE ":ERROR:HIDDEN-USER\r\n"
-
-/* ARGSUSED */
-void
-ident_stream(s, sep) /* Ident service */
- int s;
- struct servtab *sep;
-{
- char buffer[BUFSIZE];
- int i, j;
-
- inetd_setproctitle(sep->se_service, s);
- j = 0;
- while ((i = read(s, buffer + j, sizeof(buffer) - j)) > 0) {
- j += i;
- buffer[j] = '\0';
- if (strchr(buffer, '\n'))
- break;
- if (strchr(buffer, '\r'))
- break;
- }
- while (j > 0 && (buffer[j-1] == '\n' || buffer[j-1] == '\r'))
- j--;
- write(s, buffer, j);
- write(s, IDENT_RESPONSE, strlen(IDENT_RESPONSE));
- exit(0);
-}
/* ARGSUSED */
void
echo_stream(s, sep) /* Echo service -- echo data back */
@@ -1736,7 +1636,7 @@ chargen_dg(s, sep) /* Character generator */
* some seventy years Bell Labs was asleep.
*/
-unsigned long
+long
machtime()
{
struct timeval tv;
@@ -1757,7 +1657,7 @@ machtime_stream(s, sep)
int s;
struct servtab *sep;
{
- unsigned long result;
+ long result;
result = machtime();
(void) write(s, (char *) &result, sizeof(result));
@@ -1769,7 +1669,7 @@ machtime_dg(s, sep)
int s;
struct servtab *sep;
{
- unsigned long result;
+ long result;
struct sockaddr_in sin;
int size;