-#ifndef CONFIG_FEATURE_TELNETD_INETD
- FD_SET(master_fd, &rdfdset);
-#endif /* CONFIG_FEATURE_TELNETD_INETD */
-
- ts = sessions;
-#ifndef CONFIG_FEATURE_TELNETD_INETD
- while (ts) {
-#endif /* CONFIG_FEATURE_TELNETD_INETD */
- /* buf1 is used from socket to pty
- * buf2 is used from pty to socket
- */
- if (ts->size1 > 0) {
- FD_SET(ts->ptyfd, &wrfdset); /* can write to pty */
- }
- if (ts->size1 < BUFSIZE) {
-#ifdef CONFIG_FEATURE_TELNETD_INETD
- FD_SET(ts->sockfd_read, &rdfdset); /* can read from socket */
-#else /* CONFIG_FEATURE_TELNETD_INETD */
- FD_SET(ts->sockfd, &rdfdset); /* can read from socket */
-#endif /* CONFIG_FEATURE_TELNETD_INETD */
- }
- if (ts->size2 > 0) {
-#ifdef CONFIG_FEATURE_TELNETD_INETD
- FD_SET(ts->sockfd_write, &wrfdset); /* can write to socket */
-#else /* CONFIG_FEATURE_TELNETD_INETD */
- FD_SET(ts->sockfd, &wrfdset); /* can write to socket */
-#endif /* CONFIG_FEATURE_TELNETD_INETD */
- }
- if (ts->size2 < BUFSIZE) {
- FD_SET(ts->ptyfd, &rdfdset); /* can read from pty */
- }
-#ifndef CONFIG_FEATURE_TELNETD_INETD
- ts = ts->next;
+#if ENABLE_FEATURE_TELNETD_STANDALONE
+ /* First check for and accept new sessions. */
+ if (!IS_INETD && FD_ISSET(master_fd, &rdfdset)) {
+ int fd;
+ struct tsession *new_ts;
+
+ fd = accept(master_fd, NULL, 0);
+ if (fd < 0)
+ goto again;
+ /* Create a new session and link it into our active list */
+ new_ts = make_new_session(fd, fd);
+ if (new_ts) {
+ new_ts->next = sessions;
+ sessions = new_ts;
+ } else {
+ close(fd);